मैं, queryBuilder बिना क्वेरी का उपयोग कर रहा है, तो इस DQLDoctrine2 एकाधिक createQuery साथ काम करता है में शामिल होने नहीं बल्कि queryBuilder साथ
$query = $this->_em
->createQuery("SELECT p, g, c
FROM LikeYeah\GoBundle\Entity\Product p
JOIN p.garments g
LEFT JOIN g.colours c
ORDER BY p.id DESC
");
सब कुछ ठीक है के साथ लेकिन अगर मैं का उपयोग क्वेरी गर्त (क्या मैं belive एक ही है)
"semantical त्रुटि] लाइन 0, col 66 के पास '.colours ग, LikeYeah \ GoBundle \ entit: इस
$qb->select('p, g, c')
->from('LikeYeah\GoBundle\Entity\Product', 'p')
->join('p.garments', 'g')
->leftJoin('g.colours', 'c')
->orderBy('p.id', 'desc');
मैं निम्नलिखित त्रुटि मिलती है जैसी क्वेरी बिल्डर वाई \ उत्पाद ': त्रुटि: पहचान परिवर्तनीय जी पथ अभिव्यक्ति में शामिल होने के लिए प्रयोग किया जाता है लेकिन पहले परिभाषित नहीं किया गया था। "
मुझे क्या याद आ रही है?
मैं दस्तावेज में 'में शामिल होने' नहीं देख सकते हैं, वहाँ 'leftJoin' और केवल 'innerJoin' है। शायद समस्या यह है कि आपका 'जॉइन' वास्तव में बाएं जॉइन है और कुछ पंक्तियों के लिए यह 'जी' को परिभाषित नहीं करता है क्योंकि इसमें शामिल होने के लिए कुछ भी नहीं है .... –
वोज्शिएच, ऐसा नहीं है, QueryBuilder के पास एक विधि है जिसका नाम ' 'शामिल हों()' '' मूल रूप से '' innerJoin() '' का उपनाम है। – Quentin