本文介绍了doctrine2找到两列OR条件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的动作:

   $matches_request = $em->getRepository('Bundle:ChanceMatch')->findByRequestUser(1);
   $matches_reply = $em->getRepository('Bundle:ChanceMatch')->findByReplyUser(1);

可以使用条件与getRepository,例如。

Is it possible to join the querys with an or condition with getRepository, eg.

$matches_reply = $em->getRepository('FrontendChancesBundle:ChanceMatch')->findBy(array('requestUser' => 1, 'replyUser' => 1); 
//this of course gives me the a result when `requestUser` and `replyUser` is `1`. 

我的表

id | requestUser | replyUser
....
12 |      1      |     2
13 |      5      |     1

我的查询应该返回 id 12& 13

感谢您的帮助!

推荐答案

您可以使用QueryBuilder或为该实体创建自定义存储库,并创建内部的函数使用QueryBuilder。

You can use QueryBuilder or create a custom repository for that entity and create a function that internally use QueryBuilder.

$qb = $em->getRepository('FrontendChancesBundle:ChanceMatch')->createQueryBuilder('cm');
$qb
    ->select('cm')
    ->where($qb->expr()->orX(
        $qb->expr()->eq('cm.requestUser', ':requestUser'),
        $qb->expr()->eq('cm.replyUser', ':replyUser')
    ))
    ->setParameter('requestUser', $requestUserId)
    ->setParameter('replyUser', $replyUserId)
;
$matches_reply = $qb->getQuery()->getSingleResult();
// $matches_reply = $qb->getQuery()->getResult(); // use this if there can be more than one result

有关自定义存储库的更多信息,请参阅官方文档

For more information on custom Repository see official documentation:

这篇关于doctrine2找到两列OR条件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-10 01:04