首页 文章

Laravel查询构建器 - 如何按别名分组,或执行原始groupBy

提问于
浏览
5

我的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中找到编译group by的方法(compileGroups),我想我可以覆盖它,但我不太清楚我会怎么做(已阅读Laravel文档) ) .

1 回答

  • 21

    如果你想做raw groupBy,你可以这样做......

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

相关问题