尝试在Laravel中添加一些字段到注册方法:auth。我已成功将它们添加到视图和数据库(在视觉上检查视图,在phpMyAdmin中为数据库检查),更新了控制器的验证器:
return Validator::make($data, [
'name' => 'required|max:255',
'email' => 'required|email|max:255|unique:users',
'type' => 'required|max:255', //new
'fees' => 'required|max:255', //new
'password' => 'required|min:6|confirmed',
]);
以及更新控制器的创建功能:
return User::create([
'name' => $data['name'],
'email' => $data['email'],
'type' => $data['type'], //new
'fees' => $data['fees'], //new
'password' => bcrypt($data['password']),
]);
然后更新模型:
protected $hidden = [
'type','fees','password', 'remember_token',
];
但是......它没有用。创建的SQL不包含我的新字段,因此返回错误,因为数据库没有默认值..
SQLSTATE [HY000]:一般错误:1364字段'费用'没有 默认值
我错过了什么吗?
任何帮助将不胜感激!
答案 0 :(得分:1)
当您创建User
时,您没有为字段222
传递值。
根据您的Validator
规则,这是必填字段,因此看起来是个错误。
return User::create([
'name' => $data['name'],
'email' => $data['email'],
'type' => $data['type'], //new
'fees' => $data['fees'], //new
'222' => $data['222'], // added
'password' => bcrypt($data['password']),
]);
如果您不想始终为222
保存值,请在迁移中将字段设置为nullable()
,或在模型中添加默认值(非空)。