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