Просто быстрый вопрос.
Мне нужно создать запрос поиска в Yii2, где andWhere присутствует, только если переменная истинна.
public function getCheckBoxItems($holiday=false)
{
$Items = Items::find()->where(['type'=>'checkbox']);
Yii::info(print_r($Items,1), 'c');
if($holiday)
$Items->andWhere(['<>','category','holiday']);
$Items->All();
foreach($Items as $Item)
{
//do something
}
}
Это не работает
Однако эта работа работает, и я ожидал этого.
$Items = Items::find()->where(['type'=>'checkbox'])->andWhere(['<>','category','holiday'])->All();
Как мне только добавить andWhere на основе $holiday
переменная
заранее спасибо
С уважением
Liam
ОБНОВИТЬ
я нашел один путь, но я уверен, что есть лучший путь
if($holiday)
$Items = Items::find()->where(['type'=>'checkbox'])->andWhere(['<>','category','holiday'])->All();
else
$Items = Items::find()->where(['type'=>'checkbox'])->All();
Просто чтобы сделать ваш код более понятным и читаемым, вы должны просто попробовать:
$itemsQuery = Items::find()->where(['type'=>'checkbox']);
if($holiday)
$itemsQuery->andWhere(['<>','category','holiday']);
$items = $itemsQuery->all();
foreach($items as $item)
{
//do something
}
Вы должны хранить $items
Результат на каждой контрольной точке:
public function getCheckBoxItems($holiday=false)
{
$Items = Items::find()->where(['type'=>'checkbox']);
Yii::info(print_r($Items,1), 'c');
if($holiday)
$Items->andWhere(['<>','category','holiday']);
$Items = $Items->All();
foreach($Items as $Item)
{
//do something
}
}