如何在MongoDB ODM中访问彼此引用的文档字段?

时间:2016-12-06 16:52:14

标签: mongodb symfony dql odm database

假设我有两个文件

用户和购买。所有购买都有对用户的引用,用户在其中有字段性别。

我想选择男性客户购买的产品。所以我有性别,我想迭代思考购买并定义他们的“性别”。

像这样的东西

public function findByGender()
{
$query =
        $this->createQueryBuilder()
        ->field(""Purchase->User->gender"")->equals('male')
        ->getQuery()
        ;

}

但当然“”......“之间的代码不起作用。我想知道是否有可能,如果是的话,我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

您需要在2个查询中分隔此查询。首先选择所有男性用户并将这些用户传递给第二个查询。我建议你对查询进行脱水处理,只选择必要的。

$users = $this->createQueryBuilder()
    ->hydrate(false)
    ->select('_id')
    ->field('gender')->equals('male')
    ->getQuery()->execute()->toArray();

$products = $this->createQueryBuilder()
    ->hydrate(false)
    ->field('user.id')->in(array_keys($users))
    ->getQuery()->execute()->toArray();