Doctrine Query count()和group By()日期

时间:2013-02-09 21:24:59

标签: doctrine doctrine-orm dql

我需要找到每天的登录总数,但是如何在DQL中逐日选择count()和group?我正在使用Doctrine 2.3。

public function getLoginCount()
{
    return $this->createQueryBuilder('i')
            ->select('i') // and count(*)
            ->groupBy('i.timestamp') // group by day
            ->getQuery()
            ->execute()
        ;
}

我需要这样的东西:

Date | count
2013-01-01 | 6
2013-01-02 | 7
2013-01-03 | 3

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:1)

OP有点迟了,但也许有人会发现它很方便。我能够通过下面的DQL查询来实现这一点:

    $dql = '
        SELECT
            SUBSTRING(i.timestamp, 1, 10) as date,
            COUNT(i) as count
        FROM Entity i
        GROUP BY date
    ';
    $query = $entityManager->createQuery($dql);
    return $query->getResult();

我认为类似的应该可以使用Doctrine查询构建器。