Здравствуйте, у меня есть три объекта Doctrine2 в моем приложении Symfony2: два ("Promo" и "PromoPeriod") в комплекте Acme:PromoBundle; один ("Магазин") в комплекте Acme:ShopBundle. Отношения: Promo - PromoPeriod: Многие к одному. PromoPeriod - Магазин: Один ко многим.
В репозитории сущности «Promo» я пытаюсь получить все промо и магазины следующим образом:
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 — это связь между PP PromoPeriod и Магазинами. Возвращается следующая ошибка:
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
И снова ничего. Возможно, это не способ решения проблемы.
Есть идеи?