Hallo Ich habe drei Doctrine2 Entitäten in meiner Symfony2-Anwendung: zwei ("Promo" und "PromoPeriod") im Bündel Acme: PromoBundle; ein ("Shop") im Bündel Acme: ShopBundle. Die Beziehungen sind: Promo - PromoPeriod: Many-to-One. PromoPeriod - Shop: Eins zu viele.Doctrine2 Query mit Auswahl auf mehreren Entitäten aus verschiedenen Symfony2 Bundles
Im Repository des Unternehmens „Promo“, versuche ich die ganze Promo und Geschäfte wie folgt zu erhalten:
return $this->getEntityManager()
->createQuery("SELECT p, s
FROM AcmePromoBundle:Promo p JOIN p.period pp JOIN pp.shops s")
->getResult();
wo: p.period die Beziehung zwischen der Promo Beispiel p und der PromoPeriod Periode ; pp.shops ist die Beziehung zwischen der PromoPeriod pp und den Shops. Der folgende Fehler zurückgegeben:
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'.")
Also, ich argumentiert, dass Lehre nicht in der Lage ist, die Art von „s“ zu verstehen (die eine Shop-Einheit ist), wird, da es in einem anderen Bündel befindet. Daher habe ich versucht, eine Klausel INSTANCE OF hinzuzufügen:
Und wieder nichts. Vielleicht ist das nicht der Weg, um das Problem zu lösen.
Irgendeine Idee?
Was ist, wenn Sie die FQCN benutzen? –
Wie soll ich den FQCN verwenden? Denken Sie daran, dass in Doctrine2 SQL-Abfragen anders formuliert sind, da Doctrine2 ein ORM ist. – JeanValjean
Mmm, mmm, FQCN = Vollständig qualifizierter Klassenname, die Art, wie Sie Entity auswählen, verwendet einen Doctrine2-Alias (AcmePromoBundle). Der Alias wird verwendet, um den Entitätsnamen während des Schreibens einer Abfrage zu verkürzen, er wird direkt dem tatsächlichen Namespace zugeordnet. Ich habe Sie gebeten, zu versuchen, das FQCN zu verwenden, um zu überprüfen, ob es ein Alias-Problem war. Die Auswahl von FQCN sollte in jedem Teil Ihrer Anwendung funktionieren. –