繁体   English   中英

为什么我的模型在关系子查询上看不到Spatie权限特征方法?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM