簡體   English   中英

symfony2 / doctrine2中的多級吸氣劑

[英]Multi level getters in symfony2/doctrine2

我想知道是否使用symfony2 / doctrine2可以更干凈地處理我下面的系統。

我目前有三個實體

實體A-與類B一對多的關系,與C類一對多的關系實體B-與類A的一對多關系,與C的一對多關系。
實體C-與A類和B類多對一關系。

如果我執行$ entityA-> getEntityB()-> getEntityC(),這將返回給我分配給實體B的所有C實體,但我真正想要的是同時分配給實體B和實體A的所有實體C實體。本質上,我想識別吸氣劑鏈,如果有道理的話。

目前,我必須將實體A傳遞到getEntityC方法中,並過濾掉我不想要的值,當處理更多對象和代碼的其他部分時,這會變得有些混亂。

是否有辦法設置最后的獲取者將迫使雙方父母而不是直接的親戚關系?

任何幫助將非常感激。

我強烈建議不要嘗試通過getter獲取值,而是通過DoctrineQueryBuilder創建查詢並使用多個左聯接。 例如這樣的事情:

$repository = $this->getDoctrine()->getRepository('GreatBundle:Entity');
$q = $repository->createQueryBuilder('e1', 'e2', 'e3')->leftJoin('e1.e2', 'e2')->leftJoin('e1.e3', 'e3');
$columns = array(
    'e1.id',
    'e2.id as e2_id',
    'c3.id as e3_id',
);
$result = $q->select($columns)->getQuery()->getArrayResult();

抱歉,我沒有完全了解您的使用情況,但是您將不得不重新創建查詢以使其適應要求。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM