2 つの列でデータを並べ替える必要があります (行の列番号 1 の値が異なる場合は、その列番号で並べ替え、それ以外の場合は列番号 2 で並べ替えます)
QueryBuilder
クエリを作成するためにを使用しています。
orderBy
メソッドをもう一度呼び出すと、以前に指定した順序が置き換えられます。
最初のパラメータとして 2 つの列を渡すことができます。
->orderBy('r.firstColumn, r.secondColumn', 'DESC');
しかし、2 番目のパラメータに 2 つの順序付け方向を渡すことはできないため、このクエリを実行すると、最初の列は昇順で順序付けされ、2 番目の列は降順で順序付けされます。両方に降順を使用したいと思います。
を使用してこれを行う方法はありますかQueryBuilder
? DQL を使用する必要がありますか?
ベストアンサー1
列名の直後に順序の方向を追加する必要があります。
$qb->orderBy('column1 ASC, column2 DESC');
ご指摘のとおり、複数の呼び出しorderBy
積み重ねない複数の呼び出しを行うこともできますaddOrderBy
:
$qb->addOrderBy('column1', 'ASC')
->addOrderBy('column2', 'DESC');