【发布时间】:2016-09-29 10:12:03
【问题描述】:
这是question 的后续行动。我有一个看起来像这样的查询:
$users = User::leftjoin('role_user', 'users.id', '=', 'role_user.user_id')
->select('users.*')
->orderBy(DB::raw('role_id IS NULL'))
->groupBy('users.id')
->orderBy('role_id', 'asc')
->get();
当我这样做时,我会为用户获取不同的值,并且它们按 role_id 以升序排列,这个查询的唯一问题是拥有两个或多个角色的用户在只有一个角色的用户之后角色。例如,用户具有id=1 和id=2 的角色,而其他用户只有id=1 的角色,该用户将在列表中具有两个角色的用户之前。我想改变这一点,让拥有更多角色的用户高于只有一个角色的用户。
【问题讨论】:
-
你可以使用 group_by 来避免重复
-
你能在“角色”上尝试分组吗
-
可以显示表格的结构吗
-
@ImtiazPabel 我已经根据您的建议更新了问题,但这仍然不是我需要的
-
@YagnikDetroja group_by 角色只会按角色对它们进行分组,这不是我所需要的,而且表结构很简单,我有一些关于他们的信息字段的用户和一个我有 id 的数据透视表, role_id 和 user_id
标签: php mysql laravel eloquent