Laravel Eloquen 使用模型在 table 插入中添加附加元素

Laravel Eloquen add additional element in table insertion using model

我通过 $RegisterData = Input::all(); 获取注册详细信息,在验证规则之后我通过 RiderModel::create($RegisterData); 创建它,在中间我想生成一个随机数并与之一起存储

即 $RegisterData ->Code = $generatedrandomnumber;

我如何在 eloquent 中执行此操作

fill() 方法呢? Fill() 将数组中的所有数据填充到 RiderModel 模型中声明的可填写字段中。

class RiderModel extends Eloquent{
    # Fillable Fields
    protected $fillable = array('foo', 'bar');
    ....
}

用可填充属性填充模型后,您可以将代码存储到模型中,然后保存:

 $riderModel = new RiderModel;
 $riderModel->fill(Input::all());
 $riderModel->code = $generatedrandomnumber;
 $riderModel->save();

最简单的方法是使用 creating 事件:

// RiderModel
public static function boot()
{
  parent::boot();

  static::creating(function ($rider) {
    $rider->code = $rider->code ?: YOUR_RANDOM_NO_FUNCTION();
  });
}

那么您根本不需要更改代码:

RiderModel::create($RegisterData);

如果没有 code 与输入一起传递,那么它将在创建过程中附加到模型。