php - 我应该如何将数据插入数据库
问题描述
我正在尝试使用自定义身份验证创建用户,并在发布数据时出现 500 错误。我猜我在用户模型上搞砸了。因为如果我尝试从表单返回输入,则返回成功,但如果我尝试将数据发布到数据库,则会收到 500 错误。ps .env 配置正确。 用户型号:
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
protected $fillable = [
'name', 'password',
];
}
授权控制器:
<?php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Models\User;
class AuthController extends Controller
{
//Login function
function register(){
return view('auth.register');
}
//Create user in DB
function create(Request $request){
//Validate requests
$request->validate([
'name'=>'required',
'password'=>'required'
]);
//Insert data into database
$user = new User;
$user->name = $request->name;
$user->password = Hash::make($request->password);
$save = $user->save();
}
}
路线:
**<?php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\AuthController;
//Register Route
Route::get('/auth/register', [AuthController::class, 'register']);
Route::post('/auth/create', [AuthController::class, 'create'])->name('auth.create');**
解决方案
检查是否有一些列不可为空或不能为空。
APP_DEBUG=true
在文件中设置.env
您会看到错误。
如果您使用的是默认用户表
$table->id();
$table->string('name'); // can't be empty
$table->string('email')->unique(); // can't be empty
$table->timestamp('email_verified_at')->nullable();
$table->string('password'); // can't be empty
$table->rememberToken();
$table->timestamps();
更新:
正如apurv-bhavsar所说,您必须use Illuminate\Support\Facades\Hash;
在上课前添加
...
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Models\User;
use Illuminate\Support\Facades\Hash; // <<
class AuthController extends Controller
...
推荐阅读
- python - 熊猫数据框争吵 - Python
- java - Swagger 客户端生成器 - 与 Response.class 冲突
- python - 将大数据集保存在 h5 文件中
- node.js - mocha 测试失败,未知选项 -r
- containers - 使用 fakeroot 构建的奇点给出了一个无效的参数错误
- r - 如何为 R 中的分类数据生成自举置信区间?
- excel - 添加一个“。” 到工作簿的名称而不更改其在 VBA 中的格式
- python - 无法为使用 PEP 517 且无法直接安装的 opencv-python 构建轮子
- c# - EF Core - 从两个不同的表中获取值并将它们合并到一个查询中
- sql - 获取每一秒的总数(Postgres分层查询实践)