2016-03-29 51 views
0

我嘗試檢索單個表上的單個查詢中的多個計數。Symfony準則多重計數

return $this->getEntityManager()->createQuery(
     'SELECT COUNT(c1) AS enabled, COUNT(c2) AS disabled, COUNT(c3) AS locked 
     FROM AcmeUserBundle:User c1, AcmeUserBundle:User c2, AcmeUserBundle:User c3 
     WHERE c1.enabled = 1 
     AND c2.enabled = 0 
     AND c3.locked = 1' 
    )->getSingleResult(); 

有了這個動作我得到這樣的結果:

array [ 
    "enabled" => "4" 
    "disabled" => "4" 
    "locked" => "4" 
] 

,我預計會是這樣的結果:

array [ 
    "enabled" => "2" 
    "disabled" => "1" 
    "locked" => "1" 
] 

我得到整個表的簡單計數。

有些身體知道我能做到嗎?

回答

0

SQL查詢錯誤。你正在做三個表的交叉連接,但是你想要計算滿足表中某些條件的行:

SELECT SUM(CASE WHEN u.enabled = 1 THEN 1 ELSE 0 END) as enabled, 
     SUM(CASE WHEN u.enabled = 0 THEN 1 ELSE 0 END) as disabled, 
     SUM(CASE WHEN u.locked = 1 THEN 1 ELSE 0 END) as locked 
FROM AcmeUserBundle:User u 
+0

謝謝,我複製粘貼它的工作。 – Arnaud