多对一关系的教义查询



在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);

相关内容

  • 没有找到相关文章

最新更新