第一个名为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
,我需要获取所有bundles
,其中包含此course
。更重要的是,courses
中的所有其他bundle
必须比当前日期更新courseDate
,并且不能隐藏。否则我不想得到这个包。我希望现在很清楚......
答案 0 :(得分:0)
在存储库(例如实体BUNDLE包)中,您必须创建自定义方法:
public function myMethod($course){
$qb = $this->createQueryBuilder("b")
->join("b.course", "c")
->join("c.courseDates", "cd")
->Where("c = :course")
->andWhere(" cd.beginDate > :now ")
->andWhere("c.hidden = 1")// if 1 means not hidden
->setParameter(":course", $course)
->setParameter(":now", new \DateTime('now'));
然后,在你的控制器中,你必须做类似的事情:
$bundles = $this->getDoctrine()->getManager()->getRepository('namespace of your BUNDLE entity')->myMethod($course);