Laravel 查询构建器 - 如何按别名分组,或进行原始 groupBy
Posted
技术标签:
【中文标题】Laravel 查询构建器 - 如何按别名分组,或进行原始 groupBy【英文标题】:Laravel query builder - How to either group by alias, or do raw groupBy 【发布时间】:2015-06-04 21:45:51 【问题描述】:我的 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 一起使用,据我所知,后者不允许在查询的 group by 部分中使用别名。
我可以在 Illuminate\Database\Query\Grammars\Grammar 中找到编译 group by 的方法(compileGroups),我想我可以覆盖它,但我不太确定我会怎么做(已阅读Laravel 文档)。
【问题讨论】:
【参考方案1】:如果你想做原始的 groupBy,你可以这样做......
...->groupBy(DB::raw('some_alias'))
【讨论】:
嗯,这比我预期的要容易!谢谢。 这个答案帮助了我,直到我遇到这个问题:***.com/q/38262133/470749 这似乎是一个不同的问题,并没有为这个问题添加任何上下文。 我做不到GROUP BY column DESC
...这个答案救了我,谢谢!
@Sodj 你可以做ORDER By column DESC
以上是关于Laravel 查询构建器 - 如何按别名分组,或进行原始 groupBy的主要内容,如果未能解决你的问题,请参考以下文章