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 %}