SQLSTATE[HY000]:常规错误:1364 字段'firstname'没有默认值(SQL:插入到"用户"("电子邮件")值 (test@test.com))



我是Laravel框架的新手。

我遇到了一个问题,即迁移用户表。我在表的"名字"中添加了 nullable,它可以工作,但对"姓氏"列显示相同的错误。我已经在每一列中都包含 nullable((,这不是正确的方法。如何解决这个问题??任何人都可以建议。

用户迁移表,面临"名字"列的问题。create_user_table.php

public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->id();
$table->string('firstname');
$table->string('lastname');
$table->string('email')->unique();
$table->date('dob');
$table->char('address',100);
$table->bigInteger('phonenumber');
});
}

带存储的用户控制器用户控制器.php

public function store(Request $request)
{
$request->validate([
'firstname'=>'required',
'lastname'=>'required',
'email'=>'required',
]);
$user=new User([
$user->firstname=>$request->get('firstname'),
'lastname'=>$request->get('lastname'),
'email'=>$request->get('email'),
'dob'=>$request->get('dob'),
'address'=>$request->get('address'),
'phonenumber'=>$request->get('phonenumber')
]);
$user->save();
return redirect('/users')->with('success','user added');
}

实现此目的的最简单方法是:

public function store(Request $request)
{
$request->validate([
'firstname'=>'required',
'lastname'=>'required',
'email'=>'required',
]);
$user=new User();
$user->firstname = $request->firstname;
$user->lastname = $request->lastname;
$user->email = $request->email;
$user->dob = $request->dob;
$user->address = $request->address;
$user->phonenumber = $request->phonenumber;
$user->save();
return redirect('/users')->with('success','user added');
}

同样在您的模型中,您必须添加此行以进行质量分配

protected $fillable = ['firstname','lastname','email','dob','address','phonenumber'];

您可以查看此链接进行批量分配:https://laravel.com/docs/7.x/eloquent#mass-assignment

您发布的代码中有错误, 这是修复:

public function store(Request $request)
{
$request->validate([
'firstname'=>'required',
'lastname'=>'required',
'email'=>'required',
]);
$user=new User([
'firstname' => $request->get('firstname'), // $user->firstname=>$request->get('firstname'),
'lastname'=> $request->get('lastname'),
'email' => $request->get('email'),
'dob' => $request->get('dob'),
'address' => $request->get('address'),
'phonenumber' => $request->get('phonenumber')
]);
$user->save();
return redirect('/users')->with('success','user added');
}

同样在这里,您正在使用质量分配,因此您应该将所有使用的列添加到 User 模型中的可填充数组中。

这是关于什么是质量分配的链接

相关内容

  • 没有找到相关文章

最新更新