Запрос Doctrine2 с выбором нескольких объектов из разных пакетов Symfony2

Здравствуйте, у меня есть три объекта 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

И снова ничего. Возможно, это не способ решения проблемы.

Есть идеи?

11
задан JeanValjean 18 June 2012 в 11:56
поделиться