我在Symfony2中有一个表单需要一个实体选择字段,其中填充了特定锦标赛中的一组玩家。我创建表单类型并将锦标赛ID传递给正确字段的query_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;
}
查询构建器中不存在()中的函数。我希望这个方法能够展示我想要做的事情。我想回到查询构建器,选择在给定锦标赛中找到的正确玩家。
我怎样才能做到这一点?
谢谢!
答案 0 :(得分:3)
您可以使用查询构建器$playersQuery->expr()->in('p.id', $playersIds)
您的查询将是这样的:
$playersQuery = $this->createQueryBuilder('p');
$playersQuery->where($playersQuery->expr()->in('p.id', $playersIds))
->orderBy('p.real_name', 'ASC');
有关辅助方法here
的更多信息