Laravel Eloquent使用模型在表插入中添加其他元素

时间:2015-01-22 10:40:41

标签: php laravel laravel-4 eloquent

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

即$ RegisterData - > Code = $ generatedrandomnumber;

我如何在雄辩的情况下做到这一点

2 个答案:

答案 0 :(得分:1)

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();

答案 1 :(得分:1)

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

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

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

然后您根本不需要更改代码:

RiderModel::create($RegisterData);

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