我需要找到每天的登录总数,但是如何在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
答案 0 :(得分:1)
从Doctrine IRC频道的帮助中,您需要创建自定义DQL函数。
文档: http://www.doctrine-project.org/blog/doctrine2-custom-dql-udfs.html
答案 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查询构建器。