こんにちは、私の Symfony2 アプリケーションには 3 つの Doctrine2 エンティティがあります。バンドル Acme:ShopBundle 内の 1 つ (「ショップ」)。関係は次のとおりです。 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
そしてまた何もありません。おそらく、これは問題を解決する方法ではありません。
何か案が?