在Symfony2上的Padel项目中,我有一个竞赛 - 注册关系
关于"竞赛"实体:
/**
* @ORMOneToMany(targetEntity="Registration", mappedBy="competition")
*/
protected $registrations;
关于"注册"实体:
/**
* @ORMManyToOne(targetEntity="PadelScheduleUserBundleEntityUser", inversedBy="registrations")
* @ORMJoinColumn(name="idPlayer", referencedColumnName="id")
*/
private $player;
/**
* @ORMManyToOne(targetEntity="Competition", inversedBy="registrations")
* @ORMJoinColumn(name="idCompetition", referencedColumnName="id")
*/
private $competition;
像这样的东西。我需要做的是,拥有玩家的ID,获取该玩家注册的比赛列表。
我得到的接近的事情是使用此查询使用连接:
$qb = $em->createQueryBuilder()
->select('r, c')
->from('PadelScheduleMainBundle:Registration', 'r')
->leftJoin('r.competition', 'c')
->where('r.player = :idPlayer')
->setParameter('idPlayer', $idPlayer);
但是,从我得到的错误来看,我认为我通过这个得到的是一个加入比赛的注册列表,但我需要我的视图是"比赛"对象列表。
有什么帮助吗?谢谢!
由于您从注册实体中进行选择,因此您将获得注册结果。也许使用这样的查询会更好运气:
$em->createQueryBuilder()
->select('c')
->from('PadelScheduleMainBundle:Competition', 'c')
->innerJoin('c.registrations', 'r')
->where('r.player = :player')
->setParameter('player', $playerId)
根据您的查询问题..我已经写了这个查询..请尝试使用此查询:
$query = $em->createQuery(
'SELECT c
FROM PadelScheduleMainBundle:Competition c
INNER JOIN c.registrations r
WHERE r.player = :idPlayer')
->setParameter('idPlayer', $idPlayer);