У меня есть поля в бд: 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();
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости