Ich habe viele zu viele Beziehung zwischen Instituten und Kurse. Ich möchte Abfrage erstellen, die nur die Institutsliste zurückgibt, denen einige Kurse zugewiesen wurden. Ich habe in dieser Situation Abfragen für one to many
geschrieben. aber für nicht many to many
. Hier ist die Beziehungen,Symfony Doctrine Query für viele zu viele Reliationships
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;
}
hier ist die Abfrage, die ich geschrieben habe, aber nicht richtig funktioniert.
$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');
versuchen Sie, den leftJoin durch einen innerJoin zu ersetzen, wenn Sie sicher sein wollen, nur die Institute mit Kursen – jiboulex