我正在尝试自定义laravel身份验证注册。而且我在表格和表单中添加了父亲姓名字段。但是不需要父亲姓名字段。 我在registercontroller.php和用户模型中也添加了此字段。 然后,如果提交具有所有字段的表单,那么数据将成功插入。但是,如果我提交的表单中没有父亲姓名字段(这不是必需的),则会出现错误: f_name字段不能为空。
如果我从可填充内容中删除f_name,则f_name无法保存。
RegisterController.php中的方法是:
protected function create(array $data)
{
return User::create([
'name' => $data['name'],
'email' => $data['email'],
'f_name' => $data['f_name'],
'password' => bcrypt($data['password']),
]);
}
User.php是:
protected $fillable = [
'name', 'email', 'f_name' , 'password',
];
答案 0 :(得分:1)
情况1:您可能已在DB中将字段默认值设置为not-NULL。检查您的迁移,它应该类似于$table->string('f_name')->nullable();
或Check in DB / phpmuadmin并默认设置为NULL。
情况2:检查验证器功能,可以将其设置为sometimes
。
答案 1 :(得分:1)
这是因为您没有使其在数据库中为空。
另一件事是,您不应该这样编写代码。您应该在命令行或终端中为php artisan make:request UserRequest
的用户创建一个Request类(用于验证请求)。请参阅以下内容。
protected function create(UserRequest $userRequest)
{
$user = new User($userRequest->all());
$user->password => bcrypt($userRequest['password']);
$user->save();
// your rest of the code.
}