我有这样的查询:
return $this->createQueryBuilder('supervision')
->join('supervision.supervisionEvents', 'supervisionEvents')
->andWhere('supervisionEvents.episode = :episode')
->setParameter('episode', $episode)
->getQuery()
->getResult()
;
我想获得所有监管,但我要过滤的monitoringEvents。 结果,我只想拥有带有Episode =:episode的SupervisionEvents。
我使用了join,leftJoin和innerJoin。没有什么能像期望的那样工作。
我试图对联接施加条件:
->innerJoin('s.supervisionEvents', 'supervisionEvent', 'WITH', 'supervisionEvent.episode = :episode')
但是那也不行!
答案 0 :(得分:-1)
您实际上非常接近。您只想仅对联接进行过滤,因此对 join子句使用带条件的左联接:
return $this->createQueryBuilder('supervision')
->addSelect('supervisionEvents')
->leftJoin('supervision.supervisionEvents', 'supervisionEvents', Join::WITH, 'supervisionEvent.episode = :episode')
->setParameter('episode', $episode)
->getQuery()
->getResult()
;
还需要选择连接的关系,以便在结果上将其水合。