У меня есть этот запрос, который работает нормально
$order_items= OrderItem::find()
->where(['location_id'=>$model->location_name,'instructor_id'=>$model->instructor_name])
->andwhere(['between', 'date', $model->from_date, $model->to_date ])->all();
Но когда $model->instructor_name пустое или нулевое, я получаю нулевой результат.
Поэтому я хочу игнорировать, когда instructor_id имеет значение Null
когда
'instructor_id'=>$model->instructor_name or instructor_id'=> Null
как я могу это сделать?






$order_items= OrderItem::find()
->where(['location_id'=>$model->location_name,'instructor_id'=>$model->instructor_name])
->andWhere(['not', ['instructor_id' => null]])
->andwhere(['between', 'date', $model->from_date, $model->to_date ])->all();
Или добавьте следующее
->andWhere(['<>', 'instructor_id', null])
Или
->andWhere('instructor_id IS NOT NULL')
Вы должны использовать иФильтрГде()
$order_items = OrderItem::find()
->where(['location_id' => $model->location_name])
->andFilterWhere(['instructor_id' => $model->instructor_name])
->andwhere(['between', 'date', $model->from_date, $model->to_date ])
->all();