Прекратите обновлять поле update_by таблицы пользователей при входе в приложение Laravel

#laravel #authentication #model #laravel-8 #laravel-authentication

Вопрос:

У меня есть следующий код внутри моей пользовательской модели.

 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.
есть ли какой-либо способ прекратить обновление в особых случаях, таких как вход в систему ??

Ответ №1:

В событии обновления вы можете проверить, совпадает ли текущее значение 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;
        }
    }
});