我想从一些群组中获取所有用户。但是,有些事情让我很困惑。我写了一些有用的东西但我希望尽可能地简化它。
$groups = Group::with('users')->whereIn('id',array(78,160))->get();
$users = new Collection;
foreach ($groups as $group) {
foreach ($group->users as $user) {
$users->add($user);
}
}
$u = $users->unique();
foreach ($u as $user) {
echo $user->name;
}
我在('用户')"""但没有像预期的那样工作。我也尝试从用户模型端获取,但也没有工作:
$users = User::with(array('groups' => function($q){
$q->whereIn('id',array(78,160));
}))->get();
答案 0 :(得分:0)
您很可能无法使用with
执行此操作,因为它首先加载所有组,然后使用另一个查询来获取此组的所有用户。
答案是
$users = User::whereHas('groups', function($q){
$q->whereIn('id',array(78,160));
})->get();
或
$users = User::join('users_groups', 'users.id', '=', 'users_groups.user_id')->whereIn('users_groups.group_id', [78, 160])->get(['users.*']);