12

私は基本的に次の(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 ステートメントをどのように達成できるか、誰もが考えましたか?

4

2 に答える 2