私は基本的に次の(My)SQL-Queryを持っています
SELECT * FROM `address`
ORDER BY ISNULL(`company`), `company` ASC, COALESCE(`parent_id`, `address_id`), `parent_id` IS NOT NULL
どれが仕事を完璧にするか
私が対象としているのは、次の並べ替えられた出力です
ID| PARENT_ID | COMPANY | NAME
1 | NULL | A | NULL
2 | 1 | A.A | NULL
3 | 1 | A.B | NULL
4 | NULL | B | NULL
5 | NULL | C | NULL
6 | NULL | D | NULL
7 | 6 | D.A | NULL
8 | NULL | NULL | A
Symfony 2 と Doctrine を使用しています。現在、OrderBy はさまざまな側面で実装した検索の一部である必要があるため、Doctrine クエリ ビルダーを使用しています (タグによる検索、さまざまなフィールド "住所" による検索など)。
「IS NULL」または「COALESCE」を追加しようとすると
$qb->add('orderBy', ' >ORDERBY_STATEMENT< ');
または、クエリ ビルダーを使用して order by ステートメントを記述するその他の方法
私は次のことを得る
[Syntax Error] line 0, col 90: Error: Expected end of string, got 'IS'
Doctrine はベンダー固有ではないため、すべてのベンダー機能をサポートできないことがわかりました。
Doctrines DQL 関数の拡張に関する記事を読みました。しかし、Doctrine Expressions を使用した "isNull" 関数が既にあり、これは OrderBy 内では機能しません。
クエリビルダーを使用して、説明されている OrderBy ステートメントをどのように達成できるか、誰もが考えましたか?