您好我正在使用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
答案 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.x或5.x,虽然文档确实提到了 Sentinel ,它没有提供实际的例子。
自版本 6.x 以来,Audit Resolvers文档就是这个用例,其中使用了 Sentinel 。
我建议将解析器逻辑更新为以下内容:
return Sentinel::check() ? Sentinel::getUser()->getUserId() : null;
当用户未登录时,这将阻止在getUserId()
上调用null
。