Doctrine MongoDB,其中两个字段相等

问题描述 投票:0回答:2

如何在 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

mongodb doctrine-orm
2个回答
1
投票

使用

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();

0
投票

如果有人现在正在寻找答案:

$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();
© www.soinside.com 2019 - 2024. All rights reserved.