Laravel Принадлежит отношению к многим с условием WhereHas - PullRequest
0 голосов
/ 14 июля 2020

У меня есть отношения в моей БД:

public function managers()
{
   return $this->belongsToMany(User::class, 'manager_location', 'location_id', 'manager_id')
}

Это отношение работает хорошо - вернуть всех пользователей, которые были синхронизированы с некоторым местоположением. Я использую spatie/laravel-permissions, и у моих пользователей разные роли. Когда я пытаюсь вернуть пользователей с какой-либо ролью (добавить whereHas к отношению), он продолжает возвращать все записи:

public function managers()
    {
        return $this->belongsToMany(User::class, 'manager_location', 'location_id', 'manager_id')->whereHas('roles', function ($q) {
            $q->where('name', '=','manager');
        });
    }

Где я ошибся?

PS Mysql запрос журнала:

select * from `users` inner join `manager_location` on `users`.`id` = `manager_location`.`manager_id` where `manager_location`.`location_id` is null and exists (select * from `roles` inner join `model_has_roles` on `roles`.`id` = `model_has_roles`.`role_id` where `users`.`id` = `model_has_roles`.`model_id` and `model_has_roles`.`model_type` = ? and `name` = ?)

Дамп QueryBuilder: https://pastebin.com/j6ik35mK

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...