Как я могу использовать Doctrine QueryBuilder, чтобы выбрать столбец, используя внешний ключ? - PullRequest
0 голосов
/ 17 мая 2019

У меня есть запрос, чтобы найти сумму очков для отдельного игрока в данном турнире. Он работает хорошо, за исключением того, что значение «Пользователь» возвращается в качестве идентификатора внешнего ключа для этого пользователя.

$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')
        ;

Можно ли вместо этого выбрать имя пользователя пользователя? Я ожидаю, что это возможно, вместо того, чтобы делать еще один запрос для каждого пользователя в результате.

1 Ответ

0 голосов
/ 17 мая 2019

Просто присоединитесь к пользовательской таблице и добавьте имя пользователя для выбора запроса:

$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');
...