我有一个查询可以在给定比赛中找到单个球员的积分总和。它运行良好,除了返回"用户"的值作为该用户的外键ID。
$q = $this->createQueryBuilder('s')
->select('IDENTITY(s.user) as user', 'SUM(s.points) as points')
->groupBy('s.user')
->andWhere('s.tournament = :tournament')
->setParameter('tournament', $tournament)
->orderBy('points', 'DESC')
;
有没有一种方法可以选择用户的用户名?我希望这是可能的,而不必为结果中的每个用户进行另一个查询。
只需加入用户表,然后添加用户名以选择查询:
$q = $this->createQueryBuilder('s')
->select('IDENTITY(s.user) as user', 's.username', 'SUM(s.points) as points')
->leftJoin('s.user','user')
->groupBy('s.user')
->andWhere('s.tournament = :tournament')
->setParameter('tournament', $tournament)
->orderBy('points', 'DESC');