[英]Why my model can't see spatie permissions trait method on relationship subquery?
我在laravel项目中使用spatie / laravel-permissions作曲家软件包。 当我运行此查询时:
$jobs = Job::whereIn('id', $ids)->whereHas('user', function ($query) {
$query->hasRole('company');
})->get();
返回错误信息
调用未定义的方法Illuminate \\ Database \\ Eloquent \\ Builder :: hasRole()
我该如何解决我的问题?
hasRole
方法不是作用域,不能在Builder实例上使用。
我认为您应该能够在应用程序中使用role
-scope 。
$jobs = Job::whereIn('id', $ids)->whereHas('user', function ($q) {
return $q->role('company');
})->get();
由于传递给函数闭包的$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();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.