每次保存时如何将 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();
}
}
每次我执行以下操作时:
$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();
}
}