Php Symfony学说多重计数

Php Symfony学说多重计数,php,doctrine-orm,symfony,Php,Doctrine Orm,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 WHE

我尝试在单个表上的单个查询中检索多个计数

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"
]
我对整张桌子进行简单的计数


有人知道我是怎么做到的?

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