首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Laravel 5.3 8月添加自定义(防护)字段

在Laravel 5.3 8月添加自定义(防护)字段
EN

Stack Overflow用户
提问于 2017-01-20 17:26:53
回答 2查看 540关注 0票数 0

我试图添加一个自定义字段“角色”到Laravel5.3用户8月。角色将决定用户在其他角色中是否是管理员,因此由于Auth脚手架使用大量可分配属性,因此存在漏洞。

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

代码语言:javascript
复制
protected $guarded = [
  'role'
];

RegisterController我添加了我的自定义字段(默认用户将拥有角色= customer);

代码语言:javascript
复制
   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 (nameemailpassword,>facebook_idlinkedin_idavatartokenupdated_at,>created_at)值(名称、name@domain.co.uk、散列密码、

我的一生都找不出答案。

我在想,也许我没有使用大量可分配的输入,但我有一种感觉,可能会把Auth脚手架的其余部分搞砸。

谢谢你的帮助

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-01-20 19:03:40

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

代码语言:javascript
复制
class User extends Model
{
    protected $attributes = [
        'role' => 'customer',
    ];

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

现在,当您使用create方法而不传递'role'属性时,插入将使用值'customer'

票数 1
EN

Stack Overflow用户

发布于 2017-01-21 13:07:36

在为添加角色字段的users表进行迁移时,需要将该字段设置为可为空,或者为其设置一个默认值,以便在没有角色字段的情况下进行大规模赋值时,数据库知道如何处理该字段。

代码语言:javascript
复制
Schema::table('users' function(Blueprint $table){
  $table->string('role')->default('customer');
});

代码语言:javascript
复制
Schema::table('users' function(Blueprint $table){
  $table->string('role')->nullable();
});

如果您的代码能够处理空角色值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41769233

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档