Doctrine MongoDB ODM поиск в двух или более полях
Я хотел бы написать запрос в Doctrine Mongo ODM, который ищет по регулярному выражению в двух или более полях. В SQL это будет выглядеть так:
SELECT * FROM user WHERE name LIKE %search% OR surname LIKE %search%;
Я могу написать запрос для одного поля следующим образом:
$qb->field('surname')->equals(new \MongoRegex('/.*'.$this->search.'.*/i'));
но я затрудняюсь, когда пытаюсь выполнить поиск в большем количестве полей.
Спасибо за любую помощь
Ответы
Ответ 1
ну на самом деле это довольно просто, я узнал через 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')));
Ответ 2
Вам нужно использовать оператор $или. Я не уверен, как это делается в доктрине, но вы ищете эквивалент этого в оболочке:
db.people.find({ $or: [{surname: /^regex1/}, {surname: /^regex2/}] })