Мне нужен расширенный фильтр, такой как веб-сайт электронной коммерции. Когда я выбираю флажок, он должен отображать данные из выбранного диапазона. Поэтому я создал несколько флажков, которые хранят значения, такие как 2-4, 4-8, 8-50 и так далее.
Чтобы установить условие фильтра, я написал следующий код
if(!empty($this->request->data['filter']['workinghrs'])) {
$workinghrsdata = array();
foreach($this->request->data['filter']['workinghrs'] as $v) {
$conditions[]['Gig.workinghrs BETWEEN ? AND ?'] =explode('-', $v);
}
}
Которые генерируют этот sql.
Gig
,workinghrs
МЕЖДУ 2 И 4 И Gig
,workinghrs
Между 4 и 8
Но я хочу установить оператор OR в качестве позиции AND. Таким образом, запрос должен быть как,
Gig
,workinghrs
МЕЖДУ 2 И 4 ИЛИ Gig
,workinghrs
Между 4 и 8
Как это решить?
добавлять OR
Индекс к массиву условий —
$conditions['OR'][]['Gig.workinghrs BETWEEN ? AND ?'] =explode('-', $v);
Других решений пока нет …