Php 用'法查找条令;还是条件';?
是否可以在条令findBy()方法中使用或语句 我希望输出如下:Php 用'法查找条令;还是条件';?,php,symfony,doctrine-orm,doctrine,Php,Symfony,Doctrine Orm,Doctrine,是否可以在条令findBy()方法中使用或语句 我希望输出如下: SELECT * FROM `friends` WHERE userId=1 OR FriendId=1 ; 现在的代码是: $user = $repository->findBy(array( 'userId' => $this->getRequest()->getSession()->get('id') ); MongoDB特定语法 您可以在传递给findBy的
SELECT * FROM `friends` WHERE userId=1 OR FriendId=1 ;
现在的代码是:
$user = $repository->findBy(array(
'userId' => $this->getRequest()->getSession()->get('id')
);
MongoDB特定语法
您可以在传递给findBy
的数组中使用$或
和$和
键:
$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
您可以使用querybuilder表达式构建或
子句,该表达式如下所示:
$qb->where(
$qb->expr()->orX(
$qb->expr()->eq('f.userId', ':uid'),
$qb->expr()->eq('f.FriendId', ':fid')
)
)
->setParameter('uid', $id)
->setParameter('fid', $id);
即使使用相同的值两次,也必须调用setParameter
两次
最后,还有一些文档我只会使用DQL。。。向您的存储库中添加如下功能:
public function findFriends($userId)
{
return $this->getEntityManager()
->createQuery('SELECT f FROM Friends WHERE userId = :userId OR FriendId = :userId')
->setParameter('userId', $userId)
->getOneOrNullResult();
}
或者使用查询生成器而不是DQL:
public function findFriends($userId)
{
return $this->getEntityManager()
->createQueryBuilder()
->from('Friends', 'f')
->where('f.userId = :userId')
->orWhere('f.friendId = :userId')
->setParameter('userId', $userId)
->getQuery()
->getOneOrNullResult();
}
然后使用:
$user = $repository->findFriends($this->getRequest()->getSession()->get('id'));
你试过你的两个问题吗?两者都不起作用。@Cerad:我没有,也没有注意到OP可能没有使用MongoDB这一事实。我已经为我更新了答案:未识别的字段:$或