我有大胖 QueryBuilder 生成像这个问题中的 sql 。显然,所有这些 leftJoins 使我的查询爬网。
所以我想我只需要获取与其匹配的 ID,然后附加
$ids = $cloneOfqb->select("o.id")->resetDqlPart("join")....->getResult() ;
return $qb->andWhere("o.id IN (:ids)")->setParameter("ids", $ids)
问题:
这会很好地工作,但resetDqlPart("join")
会删除所有连接,包括leftJoin
和innerJoin
。我经常使用innerJoins,因为它使代码可读。有没有办法只重置leftJoins但留下innerJoins?它不必是 QueryBuilder 对象,Doctrine\ORM\Query
如果需要它可以是一个孩子。