0

我在我的 laravel 项目中使用spatie/laravel-permissions composer 包。当我运行此查询时:

$jobs = Job::whereIn('id', $ids)->whereHas('user', function ($query) {
    $query->hasRole('company');
})->get();

返回错误信息

调用未定义的方法 Illuminate\Database\Eloquent\Builder::hasRole()

我该如何解决我的问题?

4

2 回答 2

1

hasRole-method不是作用域,不能在 Builder 实例上使用。

我认为您应该能够在您的应用程序中使用role-scope

$jobs = Job::whereIn('id', $ids)->whereHas('user', function ($q) {
    return $q->role('company');
})->get();
于 2019-09-11T11:44:55.050 回答
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();
于 2019-09-11T11:34:20.437 回答