如何在查询Laravel 5.8中分组

时间:2019-12-19 07:26:58

标签: mysql sql laravel laravel-5 eloquent

我想使用laravel查询构建器将数据中的table_name分组。但是当我运行它时,结果仍然没有分组。 这是我的数据:

enter image description here

这是我要执行的查询:

$data['list_module'] = DB::table('roles as a')
                         ->leftJoin('permission_role as b', 'a.id', 'b.role_id')
                         ->leftJoin('permissions as c', 'b.permission_id', 'c.id')
                         ->where('a.id', $id)
                         ->select('c.key','c.table_name')
                         ->groupBy('c.key', 'c.table_name')
                         ->orderBy('c.table_name', 'DESC')
                         ->get();

2 个答案:

答案 0 :(得分:0)

已将其分组,并按keytable_name分组。

如果您只想按table_name分组,请尝试以下操作:

$data['list_module'] = DB::table('roles as a')
                         ->leftJoin('permission_role as b', 'a.id', 'b.role_id')
                         ->leftJoin('permissions as c', 'b.permission_id', 'c.id')
                         ->where('a.id', $id)
                         ->select('c.key','c.table_name')
                         ->groupBy('c.table_name')
                         ->orderBy('c.table_name', 'DESC')
                         ->get();

如果将sql_mode设置为only_full_group_by,我认为您需要使用any_value

->select(\DB::raw('ANY_VALUE(c.key) AS key'),'c.table_name')

或在应用程序的数据库配置文件config/database.php mysql数组中,将strict => false设置为禁用MySQL的严格模式:

答案 1 :(得分:0)

尝试此代码

 ->select('c.key','c.table_name')
 ->groupBy('c.table_name')
 ->orderBy('c.table_name', 'DESC')
 ->get();