PhpStorm 说找不到方法

PhpStorm says find method not found

在laravel 8我做了一个模型app/Models/Role。php

class Role extends Model
{
    use HasFactory;

    public function users(): BelongsToMany
    {
        return $this->belongsToMany(User::class);
    }
}

在routes/web.php我做了路线

Route::get('/role/{id}/user', function ($id) {
    $users = Role::find($id)->users()->get();
    foreach ($users as $user) {
        echo $user;
    }
});

PhpStorm 显示错误消息“在 App\Models\Role 中找不到方法 'find'”。请帮我解决这个问题。谢谢

它仅 PhpStorm 显示 erorr.Ide 无法识别 methods.If 您调用该路由然后获得所需的输出。

解决

Method 'find' not found in \App\Models\Role

只需调用query()方法

 $users = Role::query()->find($id)->users()->get();

query() returns \Illuminate\Database\Eloquent\Builder

对于 PhpStorm 中的模型,这应该是最终答案:

在您的模型中使用 @mixin \Eloquent 可以解决所有令人头疼的问题。