Page
モジュールによってロードされるDoctrineエンティティがありますFoo
。このページは、GedmoDoctrineExtensionによって提供されるネストされたセットです。モジュールには、ページに関連する1:1Bar
の別のモデルがあります。ツリーをロードMetadata
するときにメタデータを直接結合したいと思います。Foo
したがって、モジュール内Foo
:
$em->getRepository('My\Entity\Page')->getRootNodes();
これによりページのコレクションが読み込まれますが、メタデータを直接利用できるようにしたいと思います。ノードの読み込み後にイベントをトリガーするため、すべてのモジュールがこのイベントをサブスクライブして、ページを好きなように使用できます(この場合、ナビゲーション構造にはメタデータが必要ですが、ナビゲーションはモジュールとは関係ありませんFoo
。Bar
)。
システムはモジュール式に保つ必要があるため、Page
に依存しませんMetadata
。どういうわけかBar
、イベントをリッスンして、リポジトリ内にクエリを構築することは可能ですか?次に、各ページのメタデータをロードするための追加の結合を追加します。
function getCalledOnEventTrigger($event)
{
$q = $event->getQueryObject();
$q->leftJoin('some join expression');
// Query now joins metadata as well
}