6

私の行動:

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

orたとえば、getRepository を使用してクエリを条件に結合することは可能ですか。

$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.

手伝ってくれてありがとう!

4

2 に答える 2

15

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

于 2013-03-05T19:05:07.730 に答える