1

我需要找到每天的登录总数,但是如何在 DQL 中选择 count() 和按天分组?我正在使用 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
4

2 回答 2

1

从 Doctrine IRC 频道的帮助中,您需要创建自定义 DQL 函数。

示例: https ://github.com/beberlei/DoctrineExtensions/blob/master/lib/DoctrineExtensions/Query/Mysql/Day.php

文档: http: //www.doctrine-project.org/blog/doctrine2-custom-dql-udfs.html

于 2013-02-10T13:17:42.730 回答
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 查询生成器。

于 2014-07-12T01:36:24.430 回答