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

pro*_*mer 5 php laravel eloquent laravel-4

每次我执行以下操作:

$user = new User;
$user->name = 'John';
$user->save();
Run Code Online (Sandbox Code Playgroud)

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

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

Jos*_*ber 11

您可以在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();
    }

}
Run Code Online (Sandbox Code Playgroud)