让我们假设我有两个文档
用户和购买。所有购买都有对用户的参考,用户中有一个现场性别。
我想选择由男性客户购买的产品。所以我有性别,我想迭代购买并定义他们的"性别"。
类似的东西
public function findByGender()
{
$query =
$this->createQueryBuilder()
->field(""Purchase->User->gender"")->equals('male')
->getQuery()
;
}
,但是当然,"……"之间的代码不起作用。我想知道是否可能,如果是,我该怎么做?
您需要在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();