有沒有人知道如何根據Doctrine 2 QueryBuilder select()語句中的條件檢索計數?學說2:按選擇類型計數項目
這是我到目前爲止已經試過......
我第一次嘗試是試圖用EQ計數()()。我收到的錯誤說:「期望的圓括號,等於」。
$qb->select($qb->expr()->count($qb->expr()->eq('t.id', '1')))
接下來我試着count()與having()。我收到的錯誤說:「達到最大功能嵌套級別。」
$qb->select($qb->expr()->count($qb->having('t.id', '1')))
然後我試着count()與where()和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(),有相同的結果。
這是MySQL的等價的東西我想代碼的QueryBuilder的:
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
不要忘了,你可以使用原生查詢。有時它更快,更優雅。 –