Как получить пользователей, связанных с несколькими ролями, такими как ["role1", "role2" ...] - PullRequest
1 голос
/ 14 апреля 2019

У меня есть отношения между пользователями и ролями, как принадлежащие ToMany. Теперь я хочу, чтобы все пользователи имели несколько ролей по именам.

Я пробовал как,

 $role_ids = [1,2];
 $users = User::whereHas('roles' , function ($query) use($role_ids) {
            $query->whereIn('roles.id', $role_ids);
        })->get();

Но этот подход дает мне пользователей, которые связаны с обоими или одной ролью, чего я не ожидаю

1 Ответ

0 голосов
/ 14 апреля 2019

Для этого вам нужно будет добавить несколько whereHas:

$role_ids = [1,2];
$users = User::with('roles');
foreach($role_ids as $role){
    $users->whereHas('roles', function($q) use ($role){
        $q->where('roles.id', $role);
    });
}
$users = $users->get();
...