2012-01-09 13 views
10

2つ以上のフィールドでregexを検索するDoctrine Mongo ODMにクエリを書きたいと思います。複数のフィールドでDoctrine MongoDB ODMを検索

SELECT * FROM user WHERE name LIKE %search% OR surname LIKE %search%; 

は、私はこのような一つのフィールドのクエリを書くことができます:SQLでは、それは次のようになります。

$qb->field('surname')->equals(new \MongoRegex('/.*'.$this->search.'.*/i')); 

が、私はそれ以上のフィールドで検索しようとしたとき、私は途方に暮れてよ。

ありがとうございました

答えて

17

だけでなく、実際に、それは非常に簡単ですが、私はこの質問

を掲示した後、5分を見つけました
$qb->addOr($qb->expr()->field('surname')->equals(new \MongoRegex('/.*'.$this->search.'.*/i'))); 
$qb->addOr($qb->expr()->field('name')->equals(new \MongoRegex('/.*'.$this->search.'.*/i'))); 
1

$または演算子を使用する必要があります。私は、これは教義で行われているかどうかはわかりませんが、あなたは、シェルでこれの同等を探しています:

db.people.find({ $or: [{surname: /^regex1/}, {surname: /^regex2/}] }) 
+0

また、索引は大文字小文字を区別する正規表現にのみ使用されることに注意してください。 –

関連する問題