我有2个查询构建器。一个用于获取所有结果(分页),另一个用于获取总计数。
这些查询的条件几乎相同,因此我想使用Criteria
对象随后附加到查询构建器。
$queryBuilder = $this->createQueryBuilder('vo');;
$criteria = Criteria::create();
$criteria->where(Criteria::expr()->eq("vo.creator", $currentUser));
$criteria->where(Criteria::expr()->eq("vo.other", $something));
$queryBuilder->addCriteria($criteria);
问题是:在很多AND中间我也有OR。只是在一个普通的查询构建器中,它读取:
$criteria->andWhere('vo.public = :isPublic OR vo.offerID IN (:sharedOfferIDs)');
使用Laravel Eloquent,你可以很好地做到这一点
->where('vo.creator', '=', $currentUser)
->orWhere(function ($query) {
query->where('vo.public ', '=', true)
->where('vo.offerID', 'in', [3, 4]');
})
为了更清楚,我希望结果SQL类似于:
where vo.creator = $currentUser AND (vo.public = true OR vo.offerID in [3, 4])
如何使用Doctrine Criteria
对此进行归档?
答案 0 :(得分:0)
这样的事情:
.focus