您好,我在Symfony2應用程序中有三個Doctrine2實體:兩個(「Promo」和「PromoPeriod」)包中的Acme:PromoBundle;一個(「商店」)在捆綁Acme:ShopBundle。 關係如下: 促銷 - 促銷期:多對一。 PromoPeriod - Shop:一對多。Doctrine2查詢選擇來自不同Symfony2包的多個實體
在實體「促銷」的資料庫,我試圖讓所有的促銷和商店如下:
return $this->getEntityManager()
->createQuery("SELECT p, s
FROM AcmePromoBundle:Promo p JOIN p.period pp JOIN pp.shops s")
->getResult();
其中:p.period是推廣實例p和PromoPeriod週期之間的關係; pp.shops是PromoPeriod pp和商店之間的關係。返回 以下錯誤:
An exception has been thrown during the rendering of a template
("The parent object of entity result with alias 's' was not found.
The parent alias is 'pp'.")
所以,我認爲,原則是不能夠理解的「S」(這是一個店鋪的實體)的類型,因爲它位於另一個包。因此,我試圖添加一個INSTANCE OF子句:
SELECT p, s
FROM AcmePromoBundle:Promo p JOIN p.period pp JOIN pp.shops s
WHERE s INSTANCE OF AcmeShopBundle:Shop
再次沒有。也許這不是解決問題的方法。
有什麼想法?
如果你使用什麼FQCN? –
我應該如何使用FQCN?請記住,在Doctrine2中,SQL查詢是以不同的方式制定的,因爲Doctrine2是一個ORM。 – JeanValjean
Mmm,mmm,FQCN =完全限定類名稱,您選擇Entity使用Doctrine2別名(AcmePromoBundle)的方式。別名用於在寫入查詢時快捷實體名稱,它直接映射到實際的名稱空間。我要求您嘗試使用FQCN來檢查它是否是別名問題。選擇FQCN應該可以在你的應用程序的任何部分工作。 –