Laravel,优化查询?

时间:2015-03-18 06:14:52

标签: php sql laravel eloquent

我想从一些群组中获取所有用户。但是,有些事情让我很困惑。我写了一些有用的东西但我希望尽可能地简化它。

$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();

1 个答案:

答案 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.*']);