我需要一个像电子商务网站这样的高级过滤器。当我选中一个复选框时,它需要显示所选范围内的数据。所以我创建了一些复选框,存储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
BETWEEN 2和4以及Gig
。workinghrs
在4和8之间
但是我想将OR运算符设置为AND的位置。所以查询应该是,
Gig
。workinghrs
BETWEEN 2和4或Gig
。workinghrs
在4和8之间
如何解决这个问题?
答案 0 :(得分:0)
将OR
索引添加到条件数组 -
$conditions['OR'][]['Gig.workinghrs BETWEEN ? AND ?'] =explode('-', $v);