У меня есть отношения в моей БД:
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