У меня есть поля в бд: one,two,three,four,five,six Обязательные для заполнения: two,three,four Вопрос, как мне проверять, заполнено ли поле one, five и six? и искать потом если заполнено one с $model->one и т.д.
Пытался делать так, но так не работает, если поле не заполнено one например, то ничего не ищет:
$v = Feedauto::find()
->andWhere(['two' => $model->two])
->andWhere(['three' => $model->three])
->andWhere(['four' => $model->four])
->andFilterWhere(['or',['region'=>null],['region' => $model->region_id]])
->andFilterWhere(['or',['one'=>null],['one' => $model->one]])
->andFilterWhere(['or',['five'=> null],['five' => $model->five]])
->andFilterWhere(['or',['six'=> null], ['six' => $model->six]])
->all();
Надеюсь меня поняли)) т.е. проверка, если поле пустое, не искать по нему, если заполнено, то искать по нему...
Если для необязательных полей по умолчанию записывается пустая строка ка значение, то запрос должен быть таким:
$v = Feedauto::find()
->andWhere(['two' => $model->two])
->andWhere(['three' => $model->three])
->andWhere(['four' => $model->four])
->andFilterWhere(['or',['region' => ''],['region' => $model->region_id]])
->andFilterWhere(['or',['one' => ''],['one' => $model->one]])
->andFilterWhere(['or',['five' => ''],['five' => $model->five]])
->andFilterWhere(['or',['six' => ''], ['six' => $model->six]])
->all();
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники