0
我有一個Doctrine實體Page
,它由模塊Foo
加載。該頁面是由Gedmo Doctrine Extension提供的嵌套集合。模塊Bar
有另一個模型Metadata
,1:1涉及到一個頁面。我想在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
}