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

How to save NOW() to the same field in my Laravel Eloquent model every time I save?

每次我执行以下操作时:

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

我想在 MySQL 中将名为 "modified" 的字段更新为 NOW()。我不能使用 Laravel 的时间戳,因为我只使用一个修改过的字段。我可以依靠 MySQL 为我做这件事,但我想知道是否有办法在我的 Laravel 模型中完成这个?也许在保存之前以某种方式使用修改器来设置它?

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

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

}