यह उन स्थितियों में से एक है जहां सिद्धांत ओआरएम आपको हल करने की तुलना में अधिक मुद्दों का कारण बनने जा रहा है। आप यह कर सकते हैं:
- एक मूल क्वेरी का उपयोग करें
और प्रासंगिक
ResultSetMapping
सेटअप - अपनी SQL क्वेरी को किसी ऐसी चीज़ में दोबारा बदलें जिसे DQL DQL में संभाल सके। आपके पास जो प्रश्न है उसे देखते हुए आप इसे करने के कई अलग-अलग तरीके हैं (उदाहरण के लिए सबक्वायरी को FROM / JOIN भाग में एक अस्थायी तालिका के रूप में मानना) लेकिन मुझे ऐसा कोई तरीका नहीं दिख रहा है जिससे Doctrine DQL अनुमति देगा
- डॉक्ट्रिन डीबीएएल का उपयोग करके सीधे एसक्यूएल के लिए जाएं। ऐसा लगता है कि आप
$this->_em
. का उपयोग कर रहे हैं जो मुझे लगता है कि आप एकEntityRepository
. में हैं , तो आप यह कर सकते हैं:$this->_em->getConnection()
एक प्राप्त करने के लिए डीबीएएल कनेक्शन तो बस$conn->query()
do करें . जाहिर है इस तरह आप एक ORM (डेटाबेस अज्ञेयवादी आदि) के लाभों को खो देते हैं, लेकिन आप ORM को जटिल प्रश्नों को निष्पादित करने वाले कर के रूप में सोच सकते हैं।
मैं समझता हूं कि इनमें से कोई भी आदर्श नहीं है, लेकिन अनुभव से, कभी-कभी आपको जो चाहिए उसे हासिल करने के लिए Doctrine ORM को रास्ते से हटा देना बेहतर होता है।