@lenkagruzd

(YII2)Как устроить поиск AR при поиске нескольких значений одного параметра?

Доброго времени суток.

Требуется решить задачу: в поиске AR за раз нужно обрабатывать более чем 1 значения для поиска по параметру.

Есть столбец города. В поиск вводим: Казань, Самара, Ростов и т.п. через разделитель. Поиск обрабатывает каждый из городов и выводим совпадения.

В моделе Search организовать перебор foreach не получилось. Разбивали запрос через 'explode' по запятой и отправляли в цикл.
foreach ($array as $city_str) {
            $query->andFilterWhere(['like', 'city', $city_str]);


Подскажите, в какую сторону копать?
  • Вопрос задан
  • 571 просмотр
Решения вопроса 1
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
Я так понимаю что вместо
andFilterWhere
должно быть
orFilterWhere
или скорее всего так:
$query->andFilterWhere(['or',
['like', 'city', $city_str1],
['like', 'city', $city_str2],
....
['like', 'city', $city_str999],
]);

Потому как Ваш вариант найдет город, только если он называется как-то так "Казань-Самара-Ростовск"
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Decadal
@Decadal
->where(['city' => $cities])->all();
где $cities - список городов (array).
Проблема возникнет как только понадобится нечёткий поиск (по части значения).
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы