如何在每次保存时将NOW()保存到我的Laravel Eloquent模型中的相同字段中?

时间:2015-01-27 01:32:56

标签: php laravel laravel-4 eloquent

每次执行以下操作时:

$user = new User;
$user->name = 'John';
$user->save();

我想要一个名为" modified"在MySQL中更新为NOW()。我无法使用Laravel的时间戳,因为我只使用了一个修改过的字段。我可以依赖MySQL为我做这个,但我想知道是否有办法在我的Laravel模型中实现这一点?也许在保存之前以某种方式使用mutator来设置它?

作为奖励:我将如何做这样的事情$user->modified = "NOW()"? (这显然是错误的,但希望证明这一点)

1 个答案:

答案 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();
    }

}