हैलो मेरे पास सिम्फनी 2 एप्लिकेशन में तीन सिद्धांत 2 इकाइयां हैं: दो ("प्रोमो" और "प्रोमोपेरियोड") बंडल में Acme: प्रोमोबंडल; बंडल Acme में एक ("दुकान"): ShopBundle। संबंध हैं: प्रोमो - प्रोमोपीरियोड: कई से एक। प्रोमोपेरियोड - दुकान: एक से कई।विभिन्न सिम्फनी 2 बंडलों से कई इकाइयों पर चयन के साथ सिद्धांत 2 क्वेरी
इकाई "प्रोमो" का भंडार में, मैं सब प्रोमो पाने के लिए और दुकानों के रूप में इस प्रयास करें:
return $this->getEntityManager()
->createQuery("SELECT p, s
FROM AcmePromoBundle:Promo p JOIN p.period pp JOIN pp.shops s")
->getResult();
जहां: p.period प्रोमो उदाहरण पी और 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'.")
तो, मैं ने तर्क दिया कि सिद्धांत के बाद से यह एक और बंडल में स्थित है, "एस" (जो एक दुकान इकाई है) के प्रकार को समझने में सक्षम नहीं है। इसलिए मैंने खंड का एक इंस्टॉलेशन जोड़ने की कोशिश की:
SELECT p, s
FROM AcmePromoBundle:Promo p JOIN p.period pp JOIN pp.shops s
WHERE s INSTANCE OF AcmeShopBundle:Shop
और फिर कुछ भी नहीं। शायद यह समस्या को हल करने का तरीका नहीं है।
कोई विचार?
क्या होगा यदि आप FQCN का उपयोग पढ़ें? –
मुझे एफक्यूसीएन का उपयोग कैसे करना चाहिए? याद रखें कि Doctrine2 SQL क्वेरी में एक अलग तरीके से तैयार किया गया है, क्योंकि Doctrine2 एक ओआरएम है। – JeanValjean
एमएमएम, एमएमएम, एफक्यूसीएन = पूरी तरह से योग्य वर्ग का नाम, जिस तरह से आप इकाई का चयन करते हैं वह एक डॉक्टर 2 उपनाम (AcmePromoBundle) का उपयोग कर रहा है। उपनाम का उपयोग क्वेरी लिखते समय इकाई नाम को शॉर्टकट करने के लिए किया जाता है, यह सीधे वास्तविक नामस्थान पर मैप किया जाता है। मैंने आपको एफक्यूसीएन का उपयोग करने के लिए कहा है कि यह एक एलियासिंग समस्या है या नहीं। एफक्यूसीएन का चयन करना आपके आवेदन के किसी भी हिस्से में काम करना चाहिए। –