假设我有两个文件
用户和购买。所有购买都有对用户的引用,用户在其中有字段性别。
我想选择男性客户购买的产品。所以我有性别,我想迭代思考购买并定义他们的“性别”。
像这样的东西
public function findByGender()
{
$query =
$this->createQueryBuilder()
->field(""Purchase->User->gender"")->equals('male')
->getQuery()
;
}
但当然“”......“之间的代码不起作用。我想知道是否有可能,如果是的话,我怎么能这样做?
答案 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();