dimqakolyada
@dimqakolyada
Telegram бот @kodi_robot ответит на любой вопрос!

Как реализовать поиск нескольких значений в одном поле?

Всем привет, помогите, пожалуйста решить мою проблему. Вот пусть есть у нас блоги. Блоги связаны с тегами М:М. Соответственно есть таблица в которой перечислены все эти тэги (tags). Как вывести блоги, с определенным тэгом это мне понятно, а вот как в SearchModel отобрать все блоги, в которых есть абсолютно все доступные тэги?
Я опробовал 2 варианта. Другие в голову не лезут, нагуглить не удалось.

Вариант 1:
$tags = ArrayHelper::getColumn(Tag::find()->all(),'id'); // тут я получаю массив со всеми существующими тэгами
            $query->andFilterWhere([
                'service_id' => $tags
            ]);


Не работает, т.к. выводит все блоги, в которых есть хотя бы какой-то из тэгов.

Вариент 2:
$tags = ArrayHelper::getColumn(Tag::find()->all(),'id'); // тут я получаю массив со всеми существующими тэгами
            foreach ($tags as $one) {
                $query->andFilterWhere([
                    'service_id' => $one
                ]);
            }


просто не работает)

Других вариантов у меня нету, посмотрите, пожалуйста.
  • Вопрос задан
  • 80 просмотров
Пригласить эксперта
Ответы на вопрос 1
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
не сильно глубоко вник, но во первых:
видимо нужно строгое равенство ибо $this->service == 0) это и null в том числе.
Далее какую-то ересь Вы написали, я так понял нужно что-то тип такого:
if ($this->service !== 0){
       $query->andFilterWhere([ 'service_id' => $this->service]);
}
Ответ написан
Ваш ответ на вопрос

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

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