每次执行以下操作时:
$user = new User;
$user->name = 'John';
$user->save();
我想要一个名为" modified"在MySQL中更新为NOW()
。我无法使用Laravel的时间戳,因为我只使用了一个修改过的字段。我可以依赖MySQL为我做这个,但我想知道是否有办法在我的Laravel模型中实现这一点?也许在保存之前以某种方式使用mutator来设置它?
作为奖励:我将如何做这样的事情$user->modified = "NOW()"
? (这显然是错误的,但希望证明这一点)
答案 0 :(得分:9)
您可以在saving
事件中完成此操作,您可以在模型的boot
方法中注册回调:
class User extends Eloquent {
public static function boot()
{
static::saving(function($user)
{
$user->modified = DB::raw('NOW()');
// Alternatively, you can use this:
$user->modified = Carbon\Carbon::now();
});
parent::boot();
}
}