2011-09-17 8 views
3

doctrine2 ODMが次のクエリを作成することは可能ですか?

db.Product.find({ "$or": [ { "name": new RegExp("test*", "i") }, { "tags": new RegExp("public true*", "i") } ], "$or": [{ "public": false, "_id": { "$in": [ ObjectId("4e74121c4fcfa9ff7ac90000"), ObjectId("4e74121c4fcfa9ff7ac80000") ] } }, { "public": true }] }); 

私は理解しないdoctrine2とここでの主な問題は、追加の$または$クエリにを追加する方法ですか?

これは、まだ見つからない$と演算子で私を助けます。

私は現在、Symfony2のDoctrine2 MongoDBの

答えて

7
/** 
* Adds an "or" expression to the current query. 
* 
* You can create the expression using the expr() method: 
* 
*  $qb = $this->createQueryBuilder('User'); 
*  $qb 
*   ->addOr($qb->expr()->field('first_name')->equals('Kris')) 
*   ->addOr($qb->expr()->field('first_name')->equals('Chris')); 
* 
* @param array|QueryBuilder $expression 
* @return Builder 
*/ 



/** 
* Adds an "and" expression to the current query. 
* 
* You can create the expression using the expr() method: 
* 
*  $qb = $this->createQueryBuilder('User'); 
*  $qb 
*   ->addAnd($qb->expr()->field('first_name')->equals('Kris')) 
*   ->addAnd($qb->expr()->field('first_name')->equals('Chris')); 
* 
* @param array|QueryBuilder $expression 
* @return Query 
*/ 
2

理論に加えて、小さな例を使用しています:meta-language

問合せ:DoctrineのQueryBuilder

<condition1> AND (<field1 == value1> OR <field2 == value2>) 

クエリ:

$queryBuilder 
    ->addAnd(<condition1>) 
    ->addAnd(
     $queryBuilder 
      ->expr() 
      ->addOr(
       $queryBuilder 
        ->expr() 
        ->field('field1') 
        ->equals('value1') 
      )->addOr(
       $queryBuilder 
        ->expr() 
        ->field('field2') 
        ->equals('value2') 
      ) 
    ); 
関連する問題