我想使用laravel查询构建器将数据中的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.key', 'c.table_name')
->orderBy('c.table_name', 'DESC')
->get();
答案 0 :(得分:0)
已将其分组,并按key
和table_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();