2016-06-27 8 views
0

上で、私はこのクエリは、クエリビルダを行っている:はDoctrineのクエリビルダ - グループエイリアス

$qb = $this->createQueryBuilder ('x'); 
$qb->innerJoin ('x.unitelement', 'ue', 'WITH', 'ue.id=x.unitelement'); 
$qb->innerJoin ('ue.object', 'o', 'WITH', 'o.id=ue.object'); 
$qb->select ('o.id, o.name, AVG(x.evaluation) AS vi, YEAR(x.date) as yyyy'); 
$qb->where('x.evaluation IS NOT NULL'); 
$qb->andWhere('x.evaluation >= 0'); 
$qb->andWhere('x.date IS NOT NULL'); 
$qb->groupBy ('o.id, o.name, x.date'); 
$qb->orderBy('yyyy'); 
$query = $qb->getQuery(); 

私は「YYYY」の別名でグループの業績に必要がありますが、私はGROUPBYにyyyyのエイリアスを挿入した場合、私はエラーを得ました。

誰かが教義クエリビルダでこのSQLを変換するためのソリューションを持っている:?

SELECT o.name, AVG(x.Evaluation) AS vi, YEAR(x.[Date]) AS yr 
FROM [Inspection] AS x 
INNER JOIN [UnitElement] AS ue 
ON ue.id=x.UnitElement_ID 
INNER JOIN Object AS o 
ON o.id=ue.[Object_ID] 
WHERE x.evaluation IS NOT NULL 
AND x.evaluation >= 0 
AND x.[Date] IS NOT NULL 
GROUP BY o.id, o.name, YEAR(x.[Date]) 
ORDER BY vi DESC; 

おかげ

+1

表示されたエラーメッセージは何をお試しください誰もが簡単に答えるようにエラーメッセージを投稿してください –

答えて

0

$qb = $this->createQueryBuilder() 
    ->from('Inspection', 'x') 
    ->select('o.id, o.name, AVG(x.evaluation) AS vi, YEAR(x.date) as yyyy') 
    ->join('UnitElement', 'ue', Join::WITH, 'ue.id = x.UnitElement_ID') 
    ->join('Object', 'o', Join::WITH, 'o.id = ue.Object_ID') 
    ->where('x.evaluation IS NOT NULL AND x.evaluation >= 0 AND x.Date IS NOT NULL') 
    ->orderBy('vi', 'DESC') 
    ->groupBy('o.id, o.name, yyyy'); 
関連する問題