您好,我的 Symfony2 应用程序中有三个 Doctrine2 实体:包 Acme:PromoBundle 中有两个(“Promo”和“PromoPeriod”);Acme:ShopBundle 包中的一个(“Shop”)。这些关系是: Promo - PromoPeriod: Many-to-One。PromoPeriod - 商店:一对多。
在实体“促销”的存储库中,我尝试获取所有促销和商店,如下所示:
return $this->getEntityManager()
->createQuery("SELECT p, s
FROM AcmePromoBundle:Promo p JOIN p.period pp JOIN pp.shops s")
->getResult();
其中: p.period 是 Promo 实例 p 与 PromoPeriod 周期的关系;pp.shops 是 PromoPeriod pp 和 Shops 之间的关系。返回以下错误:
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'.")
因此,我认为 Doctrine 无法理解“s”的类型(这是一个 Shop 实体),因为它位于另一个捆绑包中。因此我尝试添加一个 INSTANCE OF 子句:
SELECT p, s
FROM AcmePromoBundle:Promo p JOIN p.period pp JOIN pp.shops s
WHERE s INSTANCE OF AcmeShopBundle:Shop
又什么都没有。也许这不是解决问题的方法。
任何想法?