Symfony QueryBuilder-查询中的过滤器集合

我有这样的查询:

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')

但是那也不行!

dengym123 回答:Symfony QueryBuilder-查询中的过滤器集合

您实际上非常接近。您只想仅对联接进行过滤,因此对 join子句使用带条件的左联接:

return $this->createQueryBuilder('supervision')
    ->addSelect('supervisionEvents')
    ->leftJoin('supervision.supervisionEvents','supervisionEvents',Join::WITH,'supervisionEvent.episode = :episode')
    ->setParameter('episode',$episode)
    ->getQuery()
    ->getResult()
    ;

还需要选择连接的关系,以便在结果上将其水合。

参考  -doctrine left join with condition

本文链接:https://www.f2er.com/2941030.html

大家都在问