2

この(My)SQLをDQLに変換しようとしています

SELECT content, created, AVG(rating)
FROM point
GROUP BY DAY(created)
ORDER BY created ASC

そして、私は GROUP BY 部分で立ち往生しています。明らかに、DAY/WEEK/MONTH は有効な「関数」として認識されていません。

[Semantical Error] 行 0、列 80 付近の '(p.created) ORDER': エラー: 未定義の識別変数でグループ化できません。

$this->createQueryBuilder('p')
       ->select('p')
       ->groupBy('DAY(p.created)')
       ->orderBy('p.created', 'ASC')

Q: この種のクエリをクエリ ビルダーで作成することはできますか? それとも、ネイティブ クエリを使用する必要がありますか?

4

2 に答える 2

5

Doctrine2.1。?のGROUPBYクエリでカスタムDAY/WEEK / MONTHユーザー関数を使用することはできません。SELECTクエリのみがサポートされているため(2.2。?ブランチでは不明)、ネイティブクエリを使用することになり、すべてが機能します。大丈夫。

コードの概要:

// creating doctrines result set mapping obj.
$rsm = new Doctrine\ORM\Query\ResultSetMapping();

// mapping results to the message entity
$rsm->addEntityResult('Omglol\AppBundle\Entity\Message', 'm');
$rsm->addFieldResult('m', 'id', 'id');
$rsm->addFieldResult('m', 'content', 'content');
$rsm->addFieldResult('m', 'rating', 'rating');
$rsm->addFieldResult('m', 'created', 'created');

$sql = "SELECT id, content, AVG(rating) as rating, created
        FROM message 
        WHERE domain_id = ? 
        GROUP BY WEEK(created)";

$query = $this->_em->createNativeQuery($sql, $rsm);
$query->setParameter(1, $domainId);
$query->getResult();
于 2012-05-29T10:03:37.230 に答える
0

に同じトピックがあります: Link to google group

于 2012-05-23T13:36:11.770 に答える