我在laravel项目中使用spatie/laravel-permissions作曲家软件包。 当我运行此查询时:
$jobs = Job::whereIn('id', $ids)->whereHas('user', function ($query) {
$query->hasRole('company');
})->get();
返回错误消息
调用未定义的方法 Illuminate \ Database \ Eloquent \ Builder :: hasRole()
如何解决我的问题?
答案 0 :(得分:1)
hasRole
-method不是作用域,不能在Builder实例上使用。
我认为您应该可以在应用程序中使用role
-scope。
$jobs = Job::whereIn('id', $ids)->whereHas('user', function ($q) {
return $q->role('company');
})->get();
答案 1 :(得分:0)
由于传递给函数闭包的$user
是查询生成器实例,而不是User
模型的实例,因此在声明上述$user
的位置,请确保获取实例
$user = User::where(......, ........)->first(); // Without first() it's a query builder
$jobs = Job::whereIn('id', $ids)->whereHas('user', function ($user) {
$user->hasRole('company');
})->get();