【问题标题】:Insert a field with value whenever new instance of modal is created每当创建模态的新实例时插入一个具有值的字段
【发布时间】:2017-08-24 15:49:50
【问题描述】:

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

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

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

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

例如:如果我在我的应用程序中执行以下操作

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

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

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

请建议我如何实现它。

【问题讨论】:

    标签: mysql laravel laravel-query-builder


    【解决方案1】:

    User 类上覆盖静态create 函数是我认为唯一可行的方法。

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

    我已经测试过,正如我所料,oseintow 的答案不会起作用,因为它只有如果你直接修改了code 变量,你显然没有这样做。

    【讨论】:

    • 您的回答是正确的,您只是错过了在$object 上致电save()。我已经编辑了答案谢谢你的回答:)。
    • 你说得对,create 也应该保存对象。感谢您的编辑! :)
    【解决方案2】:

    将此修改器添加到您的用户模型中

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

    任何时候您保存记录代码都会被分配 Qwedf 值

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-20
      • 2019-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-11
      • 2020-03-18
      • 2019-10-14
      相关资源
      最近更新 更多