【问题标题】:doctrine2 findby two columns OR condition学说2 findby两列或条件
【发布时间】:2013-03-05 16:54:03
【问题描述】:

我的行动:

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

是否可以使用getRepository 加入带有or 条件的查询,例如。

$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

感谢您的帮助!

【问题讨论】:

    标签: symfony doctrine-orm symfony-2.1


    【解决方案1】:

    您可以使用 QueryBuilder 或为该实体创建自定义存储库,并创建一个内部使用 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
    

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

    http://symfony.com/doc/2.0/book/doctrine.html#custom-repository-classes

    【讨论】:

      【解决方案2】:

      可以将Criteria 用于getRepository() 的复杂查询:

      $criteria = new \Doctrine\Common\Collections\Criteria();
      $criteria
        ->orWhere($criteria->expr()->contains('domains', 'a'))
        ->orWhere($criteria->expr()->contains('domains', 'b'));
      
      $domain->ages = $em
        ->getRepository('Group')
        ->matching($criteria);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-03-04
        • 1970-01-01
        • 1970-01-01
        • 2014-05-08
        • 1970-01-01
        • 2016-10-16
        • 2018-06-27
        相关资源
        最近更新 更多