में टाइप करके आइटमों की गणना करें क्या कोई जानता है कि किसी सिद्धांत 2 क्वेरीबिल्डर चयन() कथन में किसी शर्त के आधार पर गिनती कैसे प्राप्त करें?सिद्धांत 2:
यहाँ मैं अब तक की कोशिश की है है ...
मेरा पहला प्रयास eq के साथ गिनती() की कोशिश करने का था()। मुझे प्राप्त त्रुटि में कहा गया है "अपेक्षित करीबी कोष्ठक, बराबर हो गया।"
$qb->select($qb->expr()->count($qb->expr()->eq('t.id', '1')))
अगला मैंने() के साथ गिनती() की कोशिश की। मुझे प्राप्त त्रुटि में कहा गया है "अधिकतम फ़ंक्शन घोंसला स्तर तक पहुंच गया।"
$qb->select($qb->expr()->count($qb->having('t.id', '1')))
फिर मैंने() और eq() के साथ गिनती() की कोशिश की। फिर मुझे "अधिकतम फ़ंक्शन घोंसला स्तर तक पहुंच गया।"
$qb->select($qb->expr()->count($qb->where($qb->expr()->eq('t.id', '1'))))
फिर मैंने इन भिन्नताओं को() में उपयोग करने की कोशिश की। वे दोनों सिंटैक्स त्रुटि "से, मिल गया '('
$qb->select($qb->expr()->count($qb->expr()->in('t.id', array(1))))
$qb->select($qb->expr()->count($qb->expr()->in('t.id', 1)))
में के लिए() उदाहरण अपेक्षित देते हैं, मैं भी एक चर के रूप में और setParameter() के माध्यम से मूल्य में गुजर एक ही परिणाम के साथ की कोशिश की।
यहाँ है कि मैं क्या QueryBuilder में कोड करने के लिए कोशिश कर रहा हूँ की MySQL बराबर है:
SELECT
SUM(IF(type.id = 1, 1, 0)) AS 'fords',
SUM(IF(type.id = 2, 1, 0)) AS 'hondas'
FROM item
JOIN type ON item.type_id = type.id
मत भूलना, कि आप उपयोग कर सकते हैं मूल प्रश्नोत्तरी कभी-कभी यह तेज़ और अधिक सुरुचिपूर्ण है। –