0

PageモジュールによってロードされるDoctrineエンティティがありますFoo。このページは、GedmoDoctrineExtensionによって提供されるネストされたセットです。モジュールには、ページに関連する1:1Barの別のモデルがあります。ツリーをロードMetadataするときにメタデータを直接結合したいと思います。Foo

したがって、モジュール内Foo

$em->getRepository('My\Entity\Page')->getRootNodes();

これによりページのコレクションが読み込まれますが、メタデータを直接利用できるようにしたいと思います。ノードの読み込み後にイベントをトリガーするため、すべてのモジュールがこのイベントをサブスクライブして、ページを好きなように使用できます(この場合、ナビゲーション構造にはメタデータが必要ですが、ナビゲーションはモジュールとは関係ありませんFooBar)。

システムはモジュール式に保つ必要があるため、Pageに依存しませんMetadata。どういうわけかBar、イベントをリッスンして、リポジトリ内にクエリを構築することは可能ですか?次に、各ページのメタデータをロードするための追加の結合を追加します。

function getCalledOnEventTrigger($event)
{
    $q = $event->getQueryObject();
    $q->leftJoin('some join expression');
    // Query now joins metadata as well
}
4

1 に答える 1

0

カスタムリポジトリに挿入したZend\EventManagerを使用してこれを完了しました。これは機能しますが、Doctrineはすべての関係を認識している必要があるため、まだうまく機能しません。そのため、定義を設定して実際に実行したいクエリは実行できません。それでも定義を追加することで解決しました。

于 2012-07-14T08:48:26.233 に答える