在我关于Symfony2的Padel项目中,我有竞争 - 注册关系
在"比赛"实体:
/**
* @ORM\OneToMany(targetEntity="Registration", mappedBy="competition")
*/
protected $registrations;
关于"注册"实体:
/**
* @ORM\ManyToOne(targetEntity="PadelSchedule\UserBundle\Entity\User", inversedBy="registrations")
* @ORM\JoinColumn(name="idPlayer", referencedColumnName="id")
*/
private $player;
/**
* @ORM\ManyToOne(targetEntity="Competition", inversedBy="registrations")
* @ORM\JoinColumn(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);
但是,由于我得到的错误似乎,我认为我通过这是一个注册列表与竞争加入,但我需要我的观点是一个"竞争"对象。
有任何帮助吗?谢谢!
答案 0 :(得分:3)
由于您从注册实体中选择,您将获得注册结果。也许你有更好的运气使用这样的查询:
$em->createQueryBuilder()
->select('c')
->from('PadelScheduleMainBundle:Competition', 'c')
->innerJoin('c.registrations', 'r')
->where('r.player = :player')
->setParameter('player', $playerId)
答案 1 :(得分:1)
根据您的查询问题..我已经写了这个查询..请使用此查询尝试:
$query = $em->createQuery(
'SELECT c
FROM PadelScheduleMainBundle:Competition c
INNER JOIN c.registrations r
WHERE r.player = :idPlayer')
->setParameter('idPlayer', $idPlayer);