Zend framework2 如何使用查询生成器获取每天注册的总用户数
我有一个带有已创建日期时间字段的用户表。我要做的是解析该表并返回每天有多少用户注册:Zend framework2 如何使用查询生成器获取每天注册的总用户数,zend-framework2,query-builder,doctrine-query,Zend Framework2,Query Builder,Doctrine Query,我有一个带有已创建日期时间字段的用户表。我要做的是解析该表并返回每天有多少用户注册: 12/06/2017 | 5 12/06/2017 | 8 12/06/2017 | 7 12/06/2017 | 12 等等 我认为最好使用pagination类来优化查询,到目前为止: public function getUserSignups($days) { $qb = $this->userRepository->createQueryBui
12/06/2017 | 5
12/06/2017 | 8
12/06/2017 | 7
12/06/2017 | 12
等等
我认为最好使用pagination类来优化查询,到目前为止:
public function getUserSignups($days)
{
$qb = $this->userRepository->createQueryBuilder('user')
->orderBy('user.created', 'ASC')
->getQuery();
$adapter = new DoctrineAdapter(new ORMPaginator($qb));
$paginator = new Paginator($adapter);
return $paginator->setCurrentPageNumber((int) 1)->setItemCountPerPage((int) $days);
}
编辑:
这将返回不分组/计数的结果:
$qb = $this->userRepository->createQueryBuilder('user')
->select('SUBSTRING(user.created, 1, 10) as date')
->getQuery();
return $qb->getResult(\Doctrine\ORM\Query::HYDRATE_ARRAY);
当然,我可以解析返回的数组并计算每个项目的数量,但这似乎是一个黑客行为。我找到了答案,希望这能帮助其他希望使用QueryBuilder的人返回一段时间内注册的用户数量:
public function getUserSignups($days)
{
$qb = $this->userRepository->createQueryBuilder('user')
->select('SUBSTRING(user.created, 1, 10) as date, COUNT(user.id) as users')
->groupBy('date')
->orderBy('date','ASC')
->setMaxResults($days)
->getQuery();
return $qb->getResult(\Doctrine\ORM\Query::HYDRATE_ARRAY);
}