Mysql 如何在DQL中使用join和count编写此查询?
我正在查询一个名为Mysql 如何在DQL中使用join和count编写此查询?,mysql,symfony,doctrine-orm,Mysql,Symfony,Doctrine Orm,我正在查询一个名为Goal(match\u id,player\u id,team\u id)的表,该表返回每个球员得分的总进球数列表 SELECT *, COUNT(*) as scored FROM goal INNER JOIN matches ON goal.match_id = matches.id WHERE matches.league_id = 19 GROUP BY player_id; 上面的查询为我提供了正确的信息,但我在将其转换为DQL时遇到了困难 我的尝试: publ
Goal
(match\u id
,player\u id
,team\u id
)的表,该表返回每个球员得分的总进球数列表
SELECT *, COUNT(*) as scored
FROM goal
INNER JOIN matches
ON goal.match_id = matches.id
WHERE matches.league_id = 19
GROUP BY player_id;
上面的查询为我提供了正确的信息,但我在将其转换为DQL时遇到了困难
我的尝试:
public function findTopGoalScorersByCompetitionAndSeason($competition, $season)
{
$query = $this->getEntityManager()
->createQuery('SELECT g, COUNT(g) as scored
FROM EliteFifaBundle:Goal g
JOIN g.match m
JOIN g.player p
WHERE m.league = :competition
AND m.season = :season
GROUP BY g.player')
->setParameter('competition', $competition)
->setParameter('season', $season);
return $query->getResult();
}
在视图中(省略了控制器,但假设它在那里):
{%为进球得分者%}
{{scorer.player.name}{{{scorer.scored}}
{%endfor%}
中不存在键为“已得分”的阵列的键“玩家”
EliteFibundle:League:show.html.twig在第86行
您是否有任何错误,或者您只是在输出上有问题?可能是重复的
{% for scorer in goalScorers %}
{{ scorer.player.name }} {{ scorer.scored }} <br />
{% endfor %}