如何在 Doctrine ODM 中创建 where 条件以仅查找两个字段相等的文档?
一个文档存在两个 int 字段
alpha
和 beta
,我想选择这两个字段相等的所有文档。
我尝试了以下方法,但没有返回结果:
$qb = $this->createQueryBuilder();
$qb
->field('alpha')->in($alphaIds)
->where('this.alpha === this.beta')
->sort('id', 'DESC');
return $qb->getQuery()->execute();
这个问题展示了如何在 alpha 和 beta 不相等的 Doctrine 之外做到这一点 https://stackoverflow.com/a/8433182/1283381
Doctrine\MongoDB\Query\Expr
类中的查询表达式通过 where()
方法创建 expr()
表达式,如下所示:
$qb = $this->createQueryBuilder();
$qb->addAnd(
$qb->expr()
->field('alpha')->in($alphaIds)
->where('this.alpha === this.beta')
)
->sort('id', 'DESC');
return $qb->getQuery()->execute();
如果有人现在正在寻找答案:
$qb = $this->createQueryBuilder('a');
$qb
->andWhere($qb->expr()->in('a.alfa', $alphaIds))
->andWhere($qb->expr()->eq('a.alpha','a.beta'))
->sort('id', 'DESC');
return $qb->getQuery()->getResult();