ИЛИ условие внутри И условие в createQueryBuilder зависит от условия
Нам нужны все активные записи, использующие "тег", который соответствует search
строка в createQueryBuilder
,
Например: поиск "NEW YORK", который внутренне выполняет поиск "NEW" или "YORK" в тегах "new, ab, other"
Мой код:
$query = $this->createQueryBuilder();
$query->field('status')->equals("active");
if (isset($params["search"]) && !empty($params["search"])) {
$searchArr = explode(" ", $params["search"]);
foreach ($searchArr as $searchVal) {
$query->addOr(
$query->expr()->addOr($query->expr()->field('tags')->equals(new \MongoRegex('/.*' . $searchVal . '.*/')))
);
}
}
Это даст результат active OR (tag1 Or tag2)
, Ожидаемый результат active AND (tag1 Or tag2)
Какие-либо предложения?
1 ответ
Замени это
foreach ($searchArr as $searchVal) {
$query->addOr(
этим
foreach ($searchArr as $searchVal) {
$query->addAnd(