Doctrine 条令查询生成器-如何选择多对多关系?

Doctrine 条令查询生成器-如何选择多对多关系?,doctrine,symfony,doctrine-orm,Doctrine,Symfony,Doctrine Orm,我在Symfony2中有一个表单,需要有一个实体选择字段,其中包含特定锦标赛中的球员集合。我创建表单类型并将比赛ID传递给正确字段的query\u builder属性。在实体存储库中,我有以下方法: public function allPlayersInTournamentQuery($tournament_id) { $repo = $this->getEntityManager()->getRepository('GameBundle:Tournament');

我在Symfony2中有一个表单,需要有一个实体选择字段,其中包含特定锦标赛中的球员集合。我创建表单类型并将比赛ID传递给正确字段的query\u builder属性。在实体存储库中,我有以下方法:

public function allPlayersInTournamentQuery($tournament_id)
{
    $repo = $this->getEntityManager()->getRepository('GameBundle:Tournament');
    $tournament = $repo->find($tournament_id);
    $players = $tournament->getPlayers();
    $playersIds = array();
    foreach ($players as $player) {
        $playersIds[] = $player->getId();
    }
    $playersQuery = $this->createQueryBuilder('p')
        ->in('p.id', $playersIds)
        ->orderBy('p.real_name', 'ASC');
    return $playersQuery;
}
查询生成器中不存在()中的函数。我希望这个方法能显示出我在努力做什么。我想返回一个查询生成器,它可以选择给定比赛中找到的正确球员

我怎样才能做到这一点


谢谢

您可以在('p.id',$playersIds)

您的查询将如下所示:

$playersQuery = $this->createQueryBuilder('p');
$playersQuery->where($playersQuery->expr()->in('p.id', $playersIds))
             ->orderBy('p.real_name', 'ASC');
有关帮助器方法的更多信息