不应静态调用非静态方法 Cartalyst\Sentinel\Sentinel::getUser()

Non-static method Cartalyst\Sentinel\Sentinel::getUser() should not be called statically

您好,我正在使用 laravel Sentinel 作为我的身份验证,我也在尝试使用 laravel 审计,我得到了 "Non-static method Cartalyst\Sentinel\Sentinel::getUser() should not be called statically".

在我的用户模型中,我添加了一个静态函数 resolveId() 用于在 Laravel 审计 'audits' table

中添加 user_id
public static function resolveId(){
    return Sentinel::getUser()->getUserId();
    //return auth()->check() ? auth()->user()->getAuthIdentifier() : null;
}

当我尝试使用 \Sentinel::getUser() 时出现以下错误。

Non-static method Cartalyst\Sentinel\Sentinel::getUser() should not be called statically

将此 use 放在相关文件的顶部:

use Cartalyst\Sentinel\Laravel\Facades\Sentinel;

来自the docs

After installing the package, open your Laravel config file located at config/app.php and add the following lines. In the $aliases array add the following facades for this package.

'Sentinel' => Cartalyst\Sentinel\Laravel\Facades\Sentinel::class,

然后将其添加到 class 的顶部:

use Sentinel;

我知道包版本 @manikandan k 寻求帮助是 4.x or 5.x,而文档确实提到了 [=23] 的用例=]Sentinel,它没有提供一个实际的例子。

自版本 6.x 以来,Audit Resolvers 文档就有这个用例,其中使用了 Sentinel相反。

我建议将解析器逻辑更新为以下内容:

return Sentinel::check() ? Sentinel::getUser()->getUserId() : null;

当用户未登录时,这将阻止在 null 上调用 getUserId()