0

第一个实体称为BUNDLE

/**
 * @var \Doctrine\Common\Collections\Collection of \Akademie\Course\Course
 * @ManyToMany(targetEntity="Akademie\Course\Course", mappedBy="bundles")
 */
private $courses;

第二个实体被称为COURSE

/**
 * @var \Doctrine\Common\Collections\Collection of \Akademie\Bundle\Bundle
 * @ManyToMany(targetEntity="Akademie\Bundle\Bundle", inversedBy="courses")
 */
    private $bundles;

/**
 * @var \Doctrine\Common\Collections\Collection of \Akademie\Course\CourseDate
 * @OneToMany(targetEntity="Akademie\Course\CourseDate", mappedBy="course")
 */
    private $courseDates;

/**
 * @var int
 * @Column(type="boolean")
 */
    private $hidden;

第三个叫做COURSEDATE

/**
 * @var \Akademie\Course\Course
 * @ManyToOne(targetEntity="Akademie\Course\Course", inversedBy="courseDates")
 * @JoinColumn(nullable=false)
 */
    private $course;

/**
 * @var \DateTime
 * @Column(type="datetimetz", nullable=true)
 */
    private $beginDate;

我有参数course,我需要获取 all bundles,其中包含 this course。更重要的是,所有其他日期coursesbundle必须courseDate比当前日期更新并且不能隐藏。否则我不想得到这个捆绑包。我希望现在很清楚...

4

1 回答 1

0

我不熟悉,MEMBER OF但我认为您最好使用INNER JOIN.

数据质量:

SELECT group
FROM path\to\entity\Group group
INNER JOIN group.persons person
INNER JOIN person.city city
WHERE person.hidden = FALSE AND city.name = :name

查询生成器:

$em->createQueryBuilder()
    ->select('group')
    ->from('path\to\entity\Group', 'group')
    ->innerJoin('group.persons', 'person')
    ->innerJoin('person.city', 'city')
    ->where('person.hidden = FALSE')
    ->andWhere('city.name = :name')
    ->setParameter('name', $yourName)
    ->getQuery()->getResult();

我假设您的人员实体有一个名为的属性hidden,并且您的人员-城市关系是双向的。

于 2014-06-10T17:01:52.160 回答