带有Join in Doctrine的createQueryBuilder

时间:2016-09-24 10:25:12

标签: symfony doctrine-orm

如果我这样做:

        ->select('a')
        ->from('AppBundle:Accomodation', 'a')
        ->innerJoin('AppBundle:AccomodationRoom', 'ap', Join::WITH, $qb->expr()->eq('ap.accomodation', 'a.id'))
        ->getQuery()->getResult();

选择住宿中的所有字段。 但是,如果我添加这个' ap'选择,如下所示,它不会选择住宿字段:

        ->select('a', 'ap')
        ->from('AppBundle:Accomodation', 'a')
        ->innerJoin('AppBundle:AccomodationRoom', 'ap', Join::WITH, $qb->expr()->eq('ap.accomodation', 'a.id'))
        ->getQuery()->getResult();

实体之间的关系。这是住宿:     / **

 * @ORM\OneToMany(targetEntity="AccomodationRoom", mappedBy="accomodation")
 */
private $rooms;

这是AccomodationRoom:

/**
 * @ORM\ManyToOne(targetEntity="Accomodation", inversedBy="rooms")
 * @ORM\JoinColumn(name="accomodation_id", referencedColumnName="id")
 */
private $accomodation;

请知道吗?

1 个答案:

答案 0 :(得分:2)

你必须select住宿和住宿。

    ->select('a', 'ap')
    ->from('AppBundle:Accomodation', 'a')
    ->innerJoin('a.rooms', 'ap')
    ->getQuery()->getResult();