首页 > 解决方案 > 在 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 也会更新。有什么办法可以在登录等特殊情况下停止更新??

标签: laravelauthenticationmodellaravel-8laravel-authentication

解决方案


在更新事件中,您可以检查 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;
        }
    }
});

推荐阅读