1

1日あたりのログインの総数を見つける必要がありますが、DQLでcount()とgroup byを選択するにはどうすればよいですか?Doctrine2.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 に答える