【发布时间】:2015-11-26 18:03:07
【问题描述】:
在实体之间的OneToMany 关系中:
-
Composer>Soundtrack -
Soundtrack>SoundtrackRating
我想通过给定的Composer 选择每个Soundtrack 并为每个Soundtrack 平均SoundtrackRatings。
在DQL:
SELECT s.name, (SUM(r.rating)/COUNT(r.rating)) AS rating
FROM Soundtrack AS s
LEFT JOIN SoundtrackRating AS r
WHERE s.composer = :composer AND r.soundtrackId = s.id
GROUP BY s.id
ORDER BY rating DESC
然后我传递:composer 类型为Composer 的实例:
$em->createQuery($dql)
->setParameter('composer', $composer)
->getResult();
但是,在查询结果中,我得到了所有 Soundtrack 条目,无论 $composer 我作为参数传递什么。唯一的区别是仅对给定$composer 的评分进行平均,其余为0 的平均评分。
这个查询的问题在哪里?
【问题讨论】: