Doctrine MongoDB ODM在两个或多个字段中搜索

baz*_*azo 11 php mongodb odm doctrine-odm

我想在Doctrine Mongo ODM中编写一个查询,在两个或多个字段中通过regex进行搜索.在SQL中它看起来像:

SELECT * FROM user WHERE name LIKE %search% OR surname LIKE %search%;
Run Code Online (Sandbox Code Playgroud)

我可以像这样写一个字段的查询:

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

但是当我尝试在更多领域进行搜索时,我感到很茫然.

谢谢你的帮助

baz*_*azo 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')));
Run Code Online (Sandbox Code Playgroud)