laravel - 在 Laravel 应用程序中登录时停止更新用户表的 update_by 字段
问题描述
我的用户模型中有以下代码。
public static function boot()
{
parent::boot();
static::creating(function ($model) {
if ($user = Auth::user()) {
$model->created_by = $user->id;
$model->modified_by = $user->id;
}
});
static::updating(function ($model) {
if ($user = Auth::user()) {
$model->modified_by = $user->id;
}
});
}
登录时,当用户表中的 remember_token 更新时,updated_by 也会更新。有什么办法可以在登录等特殊情况下停止更新??
解决方案
在更新事件中,您可以检查 remember_token 的当前值是否与旧值相同(使用getOriginal
方法)。然后才更新也modified_by。
static::updating(function ($model) {
if ($user = Auth::user()) {
if ($model->remember_token == $model->getOriginal('remember_token')) {
$model->modified_by = $user->id;
}
}
});