私の 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() メソッドのデフォルトの結果順序を設定し、子にドリルダウンするにはどうすればよいでしょうか?