私のLaravel 5アプリには、レポートを実行するための動的クエリビルダーが含まれています。そこにgroupby句が必要で、問題が発生しました。そこで実際のSQLを使用すると、(単純な列名ではなく)SQLの中にsqlコマンドが必要になることがあるため、問題が発生する可能性があります。つまり、--DAYNAME(table_name.date_column)
です。 Laravelはこれをマングルします:
\`DAYNAME(table_name\`.\`date_column)\`
クエリのselect部分には、selectRawを使用できますが、groupbyに相当するものがないようです。
エイリアスを使用することを考えました(すべての選択はエイリアスです)が、Laravelはそれらも「 `」文字でラップします。さらに、私のアプリはMySQLとSQL Serverの両方で動作する必要があり、私が知る限り、後者はクエリのgroupbyセクションでエイリアスを許可しません。
グループ化がコンパイルされるIlluminate\Database\Query\Grammars\Grammar(compileGroups)でメソッドを見つけることができ、オーバーライドできると思いますが、どうすればよいかわかりません(Laravel docs)。
生のgroupByを実行したい場合は、次のようなことを実行できます...
...->groupBy(DB::raw('some_alias'))