0

私の Symfony2 アプリには、一緒にナビゲーション メニューを作成する 4 つのエンティティがあります。

{ カテゴリ、Level1Item、Level2Item、Level3Item }

「親」と「子」のプロパティを介して接続され、階層が形成されます。MySql-db では、テーブルに parent_id というフィールドがあります (ルート レベルにあるため、カテゴリを除く)。さらに、"order" プロパティがあります (db-field "order_id" にマップされます)。

エンティティ マネージャーを介してカテゴリを Twig テンプレートにフィードします。テンプレートは、レベル 1、2、および 3 のアイテム (存在する場合) を反復処理します。

すべてのアイテムが表示される順序は、アイテム ID に沿っています。ただし、注文プロパティを先頭にしたいと思います。

ほとんどの場合、注文は {parent_id, order_id} のように行われます。各親の子項目の順序は 1、2、3 の可能性があるため、order_id 自体は一意ではありません。ただし、それらは各親プール内にあり、たとえば、parent_id 1 に対して order_id 2 を持つ 2 つの子はありません。

QueryBuilder を使用するとき、またはエンティティ リポジトリでカスタム関数を使用するときに、並べ替え機能を使用して順序を強制する方法を知っています。しかし、Twig が動作する ->findAll() メソッドのデフォルトの結果順序を設定し、子にドリルダウンするにはどうすればよいでしょうか?

4

1 に答える 1

0

次のように、エンティティ マッピング アノテーションで順序を指定できます。

/**
 * @ORM\OneToMany(targetEntity="Category", mappedBy="parent")
 * @ORM\OrderBy({"name" = "ASC"})
 */
private $children;
于 2013-03-20T12:50:13.960 に答える