我试图添加一个自定义字段“角色”到Laravel5.3用户8月。角色将决定用户在其他角色中是否是管理员,因此由于Auth脚手架使用大量可分配属性,因此存在漏洞。
因此,我已将用户模型更改为:
protected $guarded = [
'role'
];RegisterController我添加了我的自定义字段(默认用户将拥有角色= customer);
return User::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => bcrypt($data['password']),
'facebook_id' => $data['facebook_id'],
'linkedin_id' => $data['linkedin_id'],
'avatar' => $data['avatar'],
'token' => $data['token'],
'role' => 'customer',我收到以下错误消息:
SQLSTATEHY000:一般错误: 1364字段“角色”没有默认值(SQL: insert insert
users(name,password,>facebook_id,linkedin_id,avatar,token,updated_at,>created_at)值(名称、name@domain.co.uk、散列密码、
我的一生都找不出答案。
我在想,也许我没有使用大量可分配的输入,但我有一种感觉,可能会把Auth脚手架的其余部分搞砸。
谢谢你的帮助
发布于 2017-01-20 19:03:40
设置默认角色的一个简单方法是在模型中实际定义它。
class User extends Model
{
protected $attributes = [
'role' => 'customer',
];
protected $guarded = [
'role'
];
//...现在,当您使用create方法而不传递'role'属性时,插入将使用值'customer'
发布于 2017-01-21 13:07:36
在为添加角色字段的users表进行迁移时,需要将该字段设置为可为空,或者为其设置一个默认值,以便在没有角色字段的情况下进行大规模赋值时,数据库知道如何处理该字段。
Schema::table('users' function(Blueprint $table){
$table->string('role')->default('customer');
});或
Schema::table('users' function(Blueprint $table){
$table->string('role')->nullable();
});如果您的代码能够处理空角色值。
https://stackoverflow.com/questions/41769233
复制相似问题