mysql - Laravel query builder - 如何按别名分组,或做原始 groupBy

标签 mysql laravel group-by laravel-5 query-builder

我的 Laravel 5 应用程序包含一个用于报告运行的动态查询构建器。我需要一些 group by 子句,但遇到了问题。如果我在那里使用实际的 sql,我可能会遇到问题,因为有时 sql 中需要一个 sql 命令(而不是简单的列名),即 - DAYNAME(table_name.date_column)。 Laravel 破坏了这个:

\`DAYNAME(table_name\`.\`date_column)\`

对于我查询的选择部分,我可以使用 selectRaw,但似乎没有 group by 的等价物。

我想过使用别名(所有选择都是别名),但 Laravel 也将它们包装在“`”字符中。此外 - 我的应用程序需要与 MySQL 和 SQL Server 一起使用,据我所知,后者不允许在查询的分组部分中使用别名。

我可以在 Illuminate\Database\Query\Grammars\Grammar 中找到编译分组依据的方法 (compileGroups),我想我可以覆盖它,但我不太确定我会怎么做(已阅读Laravel 文档)。

最佳答案

如果你想做原始的groupBy,你可以做这样的事情......

...->groupBy(DB::raw('some_alias'))

关于mysql - Laravel query builder - 如何按别名分组,或做原始 groupBy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29370577/

相关文章:

mysql - 饼图的前 X 名用户,在 X 分组到其他后剩余

hadoop - Pig - 分组后 MAX 不工作

mysql - "Can' t 连接到本地 MySQL 服务器”在 docker-compose 中

php - Laravel Eloquent 关系——相当于 MYSQL "join"

mysql - 使用 JOIN 和 UNION 合并来自不同表的记录

php - laravel递归显示按级别/深度推荐的用户

reactjs - 请求失败,状态代码 405 React Native Laravel

sql - 如何根据合并列的值过滤分组查询?

mysql - 每人的行非规范化器/聚合行 - mysql

php - 更新 mysql 表中的部分值