In laravel 8 I made a Model app/Models/Role.php
class Role extends Model
{
use HasFactory;
public function users(): BelongsToMany
{
return $this->belongsToMany(User::class);
}
}
In routes/web.php I made route
Route::get('/role/{id}/user', function ($id) {
$users = Role::find($id)->users()->get();
foreach ($users as $user) {
echo $user;
}
});
PhpStorm shows error saying "Method 'find' not found in App\Models\Role". Please help me to fix this. Thanks
Its only PhpStorm showing erorr.Ide is not able to recognize methods.If you call that route then get desired output.
To solve
Method 'find' not found in \App\Models\Role
just call query() method
$users = Role::query()->find($id)->users()->get();
query() returns \Illuminate\Database\Eloquent\Builder
For Models in PhpStorm, this should be the definitive answer:
https://stackoverflow.com/a/48847159/1382828
Using @mixin \Eloquent in your models cures all headaches.