每当创建新的模态实例时,插入带有值的字段

时间:2017-03-30 15:50:22

标签: mysql laravel laravel-query-builder

每当为模态创建新行时,我想插入一个带值的字段。

例如:假设这是我的user.php模式

class User extends Authenticatable
{
 protected $guarded = ['id'];
}

当我在用户表中插入一行时,我想要的是在我的应用程序中,然后我想在用户表中插入一个额外的列code及其值。

例如:如果我在我的申请中执行以下操作

User::create(['name'=>'xyz', 'password' => 'kajsndjk']);

然后它应该在我的表中插入一个额外的列code =>'Qwedf'

在我的应用程序中,我创建用户的地方很多,所以我不想记住每次插入code列。

请建议我如何实现它。

2 个答案:

答案 0 :(得分:1)

在我看来,覆盖create类上的静态User函数是唯一可行的。

public static function create(array $attributes = [])
{
   $object = parent::create($attributes);
   $object->code = 'some text';
   $object->save();

   return $object;
}

我已经过测试,就像我预期的那样,oseintow的答案将无效,因为如果您直接修改code变量,它只会 没有做。

答案 1 :(得分:0)

将此mutator添加到您的用户模型

public function setCodeAttribute($value)
{
    $this->attributes['code'] = "Qwedf";
}

任何时候保存记录代码都会被赋予Qwedf值