1

私の Symfony アプリには、'createdOn' (type = date) と 'individual' の 2 つのフィールドを含むエンティティ 'Project' があります。「プロジェクト」では、個人が複数回発生する可能性があります。

_created_On_|_individual_id
 2012.12.01 |     3
 2012.12.24 |     5
 2013.01.10 |     9

「createdOn」でグループ化されたすべての個別の個人をカウントするクエリを作成して、月ごとに結果を並べ替えようとしています。また、クエリの日付範囲を設定できる必要があります。

これまでの私のクエリ:

'SELECT p.createdOn, COUNT (DISTINCT p.individual) 
                FROM ...\DossierBundle\Entity\Project p
                WHERE p.createdOn
                BETWEEN :name1
                AND :name2' 
                )->setParameters(array(
                'name1' => $startDate,
                'name2' => $endDate,
                ))

これでは、以下の望ましい結果が得られません

_DATE____|_Number_of_Individuals
Dec 2012 | 2
Jan 2013 | 1

しかし、代わりに私は得る

__DATE_____|_Number_of_Individuals
2012.12.01 |     1
2012.12.24 |     1
2013.01.10 |     1 

Google も私を助けてくれなかったので、どんなサポートも大歓迎です。

フロー

4

1 に答える 1

0

カスタムの日付関数で教義を拡張する必要があります。また、関数で group by を使用できないため、教義をだます必要があるため注意してください。

それを見てください:

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

これは、ある日のネイティブ mysql 関数の例です。

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

問題ごとのグループについてそれを読み、回避します( as を使用):

http://www.doctrine-project.org/jira/browse/DDC-1236

訪問を日付ごとにグループ化する必要があったので (時間なし)、日付拡張子を付けて dql クエリを作成しました。

select count(v) as visit_count , DATE(v.created_at) as day_created_at from Shorten\Entity\Visit v group by day_created_at 

それが役に立てば幸い。

于 2013-02-26T07:25:17.757 に答える