मैं सिद्धांत QueryBuilder उपयोग करने के लिए निम्नलिखित SQL क्वेरी प्रदर्शन करने के लिए कोशिश कर रहा हूँ मिलती है:सिद्धांत QueryBuilder साथ हटाना
DELETE php FROM product_hole_pattern php
INNER JOIN hole_pattern hp ON php.hole_pattern_id = hp.id
INNER JOIN hole_pattern_type hpt ON hp.hole_pattern_type_id = hpt.id
WHERE php.product_id = 4 AND hpt.slug='universal';
मैं इस
$qb = $this->entityManager->createQueryBuilder();
$query = $qb->delete('\SANUS\Entity\ProductHolePattern', 'php')
->innerJoin('php.holePattern', 'hp')
->innerJoin('hp.holePatternType', 'hpt')
->where('hpt.slug = :slug AND php.product=:product')
->setParameter('slug','universal')
->setParameter('product',$this->id)
->getQuery();
लेकिन मैं मिलता है:
[Semantical Error] line 0, col 50 near 'hpt.slug = :slug': Error: 'hpt' is not defined.
त्रुटि संदेश के साथ आता है DQL है:
DELETE \SANUS\Entity\ProductHolePattern php
WHERE hpt.slug = :slug AND php.product=:product
तो जॉइन पूरी तरह से छोड़े जाने लगते हैं।
उल्लेख करने के लिए बस दो चीजें हैं। 1. यह बहुत महंगा हो सकता है। 2. इस तरह के तर्क को नियंत्रक में डालने की हिम्मत न करें! – EnchanterIO
तीसरी बात - यह दौड़ की स्थिति के लिए प्रवण है। – Kaspars