MongoDB 特定语法
您可以在传递给findBy 的数组中使用$or 和$and 键:
$id = $this->getRequest()->getSession()->get('id');
$user = $repo->findBy(
array(
'$or' => array(
array('userId' => $id),
array('FriendId' => $id),
),
);
);
使用 QueryBuilder:
但鉴于这是特定于 mongoDB 的,这可能无法回答您的问题。使用 queryBuilder,你可以这样写:
$qb = $repository->createQueryBuilder();
$qb->select('f')
->from('friends', 'f')//replace friends with the correct entity name
->where('f.userId = :uid')
->orWhere('f.FriendId = :fid')
->setParameter('uid', $id)
->setParameter('fid', $id);
$users = $qb->getQuery()->getSingleResult();//or more
您可以改用查询构建器表达式来构建or 子句,如下所示:
$qb->where(
$qb->expr()->orX(
$qb->expr()->eq('f.userId', ':uid'),
$qb->expr()->eq('f.FriendId', ':fid')
)
)
->setParameter('uid', $id)
->setParameter('fid', $id);
Here's some more info
即使您两次使用相同的值,您也必须调用setParameter 两次。 The reason for this can be found here
最后,还有一些文档on the QueryBuilder class