两个字段相等的Doctrine MongoDB

时间:2016-05-18 13:07:31

标签: mongodb doctrine-orm

如何在Doctrine ODM中创建where条件以仅查找两个字段相等的文档?

存在一个包含两个int字段alphabeta的文档,我想选择这两个字段相等的所有文档。

我尝试过以下操作,但没有返回任何结果:

    $qb = $this->createQueryBuilder();
    $qb
        ->field('alpha')->in($alphaIds)
        ->where('this.alpha === this.beta')
        ->sort('id', 'DESC');
    return $qb->getQuery()->execute();        

此问题说明如何在Doctrine之外进行此操作,其中alpha和beta不相等https://stackoverflow.com/a/8433182/1283381

1 个答案:

答案 0 :(得分:0)

使用 Doctrine\MongoDB\Query\Expr 类中的查询表达式,通过 expr() where() 表达式>方法如下:

$qb = $this->createQueryBuilder();
$qb->addAnd(
    $qb->expr()     
       ->field('alpha')->in($alphaIds)
       ->where('this.alpha === this.beta')
    )
    ->sort('id', 'DESC');
return $qb->getQuery()->execute();