Laravel 5 将自定义(受保护)字段添加到Laravel 5.3 Auth

Laravel 5 将自定义(受保护)字段添加到Laravel 5.3 Auth,laravel-5,Laravel 5,我正在尝试将自定义字段“角色”添加到Laravel 5.3用户身份验证中。该角色将确定用户是否是其他角色中的管理员,因此,由于身份验证脚手架使用大量可分配属性,因此存在漏洞 因此,我已将我的用户模型更改为: protected $guarded = [ 'role' ]; RegisterController我已添加自定义字段(默认用户的角色为customer) 我收到以下错误消息: SQLSTATE[HY000]:一般错误:1364字段“角色”没有默认>值(SQL:插入用户(name,e

我正在尝试将自定义字段“角色”添加到Laravel 5.3用户身份验证中。该角色将确定用户是否是其他角色中的管理员,因此,由于身份验证脚手架使用大量可分配属性,因此存在漏洞

因此,我已将我的用户模型更改为:

protected $guarded = [
  'role'
];
RegisterController我已添加自定义字段(默认用户的角色为customer)

我收到以下错误消息:

SQLSTATE[HY000]:一般错误:1364字段“角色”没有默认>值(SQL:插入
用户
name
email
password
,>
facebook\u id
linkedin\u id
avatar
token
updated\u at
)值(姓名,name@domain.co.uk,散列密码,,,>2017-01-20 17:21:162017-01-20 17:21:16)

我这辈子都搞不懂

我在想,也许我不使用大规模可分配输入,但我有一种感觉,那可能会把Auth框架的其余部分搞砸


感谢您的帮助

设置默认角色的简单方法是在模型中实际定义它

class User extends Model
{
    protected $attributes = [
        'role' => 'customer',
    ];

    protected $guarded = [
      'role'
    ];
    //...

现在,当您使用create方法并且没有传递
'role'
属性时,insert将在迁移中为添加角色字段的users表使用值
'customer'

,您需要将该字段设置为可空,或者为其提供一个默认值,以便在不使用该字段的情况下批量分配时,数据库k现在该如何处理这个领域

Schema::table('users' function(Blueprint $table){
  $table->string('role')->default('customer');
});


如果您的代码可以处理空角色值。

好的,谢谢,我理解这是如何工作的,但我仍然有点困惑,为什么我的初始方法会失败。!干杯整个问题是您不能通过
create(['role'=>foo')
Schema::table('users' function(Blueprint $table){
  $table->string('role')->default('customer');
});
Schema::table('users' function(Blueprint $table){
  $table->string('role')->nullable();
});