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);

    }