Symfony 2 Multiple在同一个表上选择计数?

时间:2016-03-14 14:24:52

标签: php mysql symfony

好的我在一个表上有一个标志字段,打开或关闭它是布尔值。我正在尝试构建一个将接受该字段的查询并根据该标志对它们进行计数。然后我需要按帐户ID

对它们进行分组

以下是我现在正在使用的内容,

   $GetTest1 = $GetRepo->createQueryBuilder('s') <- I had 'w' in here but all that did was add an index and not a second alias?
                                ->select(' (count(s.open_close)) AS ClosedCount, (count(w.open_close)) AS OpenCount ')
                                ->where('s.open_close = ?1')
                                //->andWhere('w.open_close = ?2')
                                ->groupBy('s.AccountID')
                                ->setParameter('1', true)
                                //->setParameter('2', false)
                                ->getQuery(); 

我想要的是什么?我知道(或者至少认为)我可以使用多个表别名构建查询? - 如果我错了,请纠正我。

欢迎大家帮助。

由于

1 个答案:

答案 0 :(得分:1)

这个DQL查询将按表IDId对表中的行进行分组,对于每个查询,它将为您计算是(并且您可以通过从总计中减去该数来计算否)。 顺便说一下,我发现编写直接DQL查询比编写QueryBuilder查询要简单得多(我只在需要动态构造查询时才使用)

$results = $this->get("doctrine")->getManager()
    ->createQuery("
    SELECT t.accountId, SUM(t.openClose) as count_yes, COUNT(t.accountId) as total
    FROM AppBundle:Table t 
    GROUP BY t.accountId
    ")
    ->getResult();
foreach ($results as $result) {
    //echo print_r($result);
    //you can get count_no as $result["total"] - $result["count_yes"];
}