0

NativeQueryからSQLを生成すると、これが結果のsqlになります。

SELECT COUNT(id)AS tot、created_at FROM property WHERE created_at BETWEEN '20120501000000' AND '20120521235959' GROUP BY YEAR(created_at)、MONTH(created_at)、DAY(created_at);

これは私のResultSetMappingです:

$rsm = new \Doctrine\ORM\Query\ResultSetMapping;
$rsm->addEntityResult('Entity\Property', 'p');
$rsm->addFieldResult('p','count(id)','tot'); // <-- this don't work
$rsm->addFieldResult('p','created_at','created_at');

上記のクエリをmysqlで直接実行した結果は問題ありません。

tot created_at
11  2012-05-02 11:23:25
11  2012-05-08 14:56:40
152 2012-05-16 14:43:46
5   2012-05-17 16:26:31
29  2012-05-18 14:55:33

しかし、結果の配列totエイリアスは存在しません!!

質問は:

count(id)に対してResultSetMappingを正しく設定するにはどうすればよいですか?

4

1 に答える 1

0

私は試してみます:

$rsm->addFieldResult('p', 'tot', 'tot');

として名前が変更された列としてCOUNT(id) AS tot。エイリアスを削除するとtot、元のコードを使用できます。

$rsm->addFieldResult('p', 'COUNT(id)', 'tot');
于 2012-05-29T12:49:03.023 に答える