if (auth()->check() && (auth()->user()->hasRole('Admin'))) {
$people = Person::latest()->paginate(5);
} else {
$people = Person::where('user_id', $user->id)->latest()->paginate(5);
}
我的编辑器代码分析工具无法检测到该方法。未定义的方法 'hasRole'.intelephense(1013)
“if”条件工作正常。
我已经使用了来自 GitHub 的解决方案:
因为如果你使用 Auth::user() 扩展程序不知道它实际上是一个用户模型。
/** @var \App\Models\User */
;$user
变量定义为 auth()->user()
或 Auth::user()
;$user->hasRole()
。/** @var \App\Models\User */
$user = auth()->user(); // or Auth::user()
if ($user->hasRole('YourRole')) {
// ...
}
实际上,发生这种情况是因为您使用的代码分析工具不知道它是一个
user
模型。您可以将经过身份验证的用户定义为这样的变量
$user = Auth::user();
然后像这样将它与 hasRole 一起使用
$user->hasRole('role')
来源:https://github.com/bmewburn/vscode-intelephense/issues/1051#issuecomment-629142709
只需更改:
auth()->user()->hasRole('Admin')
与:
Auth::user()->hasRole('admin')