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

时间:2018-02-10 13:02:59

标签: laravel cartalyst-sentinel laravel-auditing

您好我正在使用laravel Sentinel作为我的Auth,我也尝试使用laravel审核我得到“非静态方法Cartalyst \ Sentinel \ Sentinel :: getUser()不应该静态调用”。

在我的用户模型中,我添加了一个静态函数resolveId(),用于在Laravel Auditing'审计'表中添加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

3 个答案:

答案 0 :(得分:3)

来自the docs

  

安装软件包后,打开位于config/app.php的Laravel配置文件,并添加以下行。   在$aliases数组中,为此包添加以下外观。

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

然后将其添加到班级的顶部:

use Sentinel;

答案 1 :(得分:0)

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

use Cartalyst\Sentinel\Laravel\Facades\Sentinel;

答案 2 :(得分:0)

我知道软件包版本 @manikandan k 正在寻求帮助4.x5.x,虽然文档确实提到了 Sentinel ,它没有提供实际的例子。

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

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

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

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