5

エンティティ タイプフィールドをカスタムで並べ替える必要がありますが、query_builderオプションはありません。データベースレベルでは利用できない情報に基づいて並べ替える必要があります (したがって、を使用しませんquery_builder)。

<select>ウィジェットの要素を並べ替える方法はありますか?

編集:テーブルにparent自己関連付けがあり、プロパティも含まれています:sectiontitle

+--------------+-----------+--------+
| section_id   | parent_id | title  |
+--------------+-----------+--------+
|            1 |      NULL | Parent |
+--------------+-----------+--------+
|            2 |          1| Child  |
+--------------+-----------+--------+
|            3 |          2| Nephew |
+--------------+-----------+--------+

アイテムがそのタイトルと祖先のタイトルの連結によってソートされる選択ボックスを表示したいと思います。つまり、次のようになります。

Parent
Parent/Child
Parent/Child/nephew

単一の SQL 選択で実現するのは簡単ではないため、オプションを取得してこの「パス」で簡単に並べ替える方法が必要です。

4

3 に答える 3

1

セクションに「パス」フィールドを追加することをお勧めします。そして、あなたが電話するとすぐに を$parent->addChild($child)に設定$child->path$parent->path . $child->pathます。これは、SQL 内でフィルタリングする場合の唯一の方法です。

この種の操作のパフォーマンスを向上させるために、ネストされたセットを使用する Tree 拡張機能の使用を検討することもできます: https://github.com/l3pp4rd/DoctrineExtensions/blob/master/doc/tree.md

于 2013-10-08T21:08:50.603 に答える