未定义方法'hasRole'.intelephense(1013)

问题描述 投票:0回答:3
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”条件工作正常。

php laravel visual-studio-code intelephense
3个回答
2
投票

我已经使用了来自 GitHub 的解决方案

因为如果你使用 Auth::user() 扩展程序不知道它实际上是一个用户模型。

  1. 让独立性知道我们使用 User 模型的实例:
    /** @var \App\Models\User */
    ;
  2. $user
    变量定义为
    auth()->user()
    Auth::user()
    ;
  3. 在代码中使用
    $user->hasRole()
/** @var \App\Models\User */
$user = auth()->user();  // or Auth::user()
if ($user->hasRole('YourRole')) {
    // ...
}

1
投票

实际上,发生这种情况是因为您使用的代码分析工具不知道它是一个

user
模型。您可以将经过身份验证的用户定义为这样的变量

$user = Auth::user();

然后像这样将它与 hasRole 一起使用

$user->hasRole('role')

来源:https://github.com/bmewburn/vscode-intelephense/issues/1051#issuecomment-629142709


0
投票

只需更改:

auth()->user()->hasRole('Admin')

与:

Auth::user()->hasRole('admin')
© www.soinside.com 2019 - 2024. All rights reserved.