【发布时间】:2019-12-11 14:25:43
【问题描述】:
我有一个这样的查询:
return $this->createQueryBuilder('supervision')
->join('supervision.supervisionEvents', 'supervisionEvents')
->andWhere('supervisionEvents.episode = :episode')
->setParameter('episode', $episode)
->getQuery()
->getResult()
;
我想获得除要过滤的监督事件之外的所有监督。 结果,我只想让 SupervisionEvents 带有 episode = :episode。
我使用了join、leftJoin和innerJoin。没有什么能像期望的那样工作。
我试图对加入有条件:
->innerJoin('s.supervisionEvents', 'supervisionEvent', 'WITH', 'supervisionEvent.episode = :episode')
但这也不行!
【问题讨论】:
-
这是预期的行为,如果您只想拥有一些 SupervisionEvents,您需要使用 php 过滤它们或更改查询以仅搜索 SupervisionEvents。
-
预期的行为是,你不能加入一个条件?
-
您可以使用条件进行连接,但这只会更改找到的监督实体。您的查询(使用内部连接)意味着“获取所有监督实体,其中至少一个事件具有情节 =:情节”。使用教义,您不必像普通 sql 那样思考,而是考虑对象,教义将始终加载所有相关实体,您无法更改。
标签: database symfony join query-builder