我有一个带有创建日期时间字段的用户表。我想要做的是解析表并返回每天有多少用户注册:
12/06/2017 | 5
12/06/2017 | 8
12/06/2017 | 7
12/06/2017 | 12
等
我认为最好使用分页类来优化查询,到目前为止还有:
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);
我当然可以解析返回的数组并计算每个项目,但这似乎是一个黑客。
答案 0 :(得分:0)
我想通了,希望这会帮助其他希望使用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);
}