【发布时间】:2016-07-04 12:28:23
【问题描述】:
Institutes 和 Courses 之间存在多对多关系。我想构建只返回分配了一些课程的机构列表的查询。在这种情况下,我已经为one to many 编写了查询。但不是many to many。这是关系,
class Institutes {
/**
* @ORM\ManyToMany(targetEntity="Courses", inversedBy="institutes")
* @ORM\JoinTable(name="institute_courses",
* joinColumns={@ORM\JoinColumn(name="institute_id", referencedColumnName="id")},
* inverseJoinColumns={@ORM\JoinColumn(name="course_id", referencedColumnName="id")}
* )
*/
protected $courses;
}
class Courses {
/**
* @ORM\ManyToMany(targetEntity="Institutes", mappedBy="courses")
*/
protected $institutes;
}
这是我写的查询,但没有正常工作。
$repository->createQueryBuilder('s')
->leftJoin('CoursesBundle:Courses','c', 'ON c.institutes = s.courses')
->where('s.active = :active')
->andWhere('s.verified = :active')
->setParameter('active', true)
->orderBy('s.name', 'ASC');
【问题讨论】:
-
如果您想确保只针对有课程的机构,请尝试用 innerJoin 替换 leftJoin
标签: php symfony doctrine-orm many-to-many query-builder