如何解决在Codeigniter中将WHERE子句分组
解决了。动态生成SQL查询并将其插入$this->db->where()
。谢谢你们!
解决方法
我想使用Codeigniter中的Active Record生成以下SQL代码:
WHERE name != 'Joe' AND (age < 69 OR id > 50)
尽我所能,我似乎无法做到以下几点
$this->db->select()->from('users')->where('name !=','Joe')->where('age <',69)->or_where('id <',$id);
有任何想法吗?我的SQL查询太复杂了,所以我不想重写传统SQL中的所有内容。
更新
我的SQL代码是根据传递给模型方法的某些参数的值动态生成的。不能使用括号的问题会引起问题,因为运算符优先级是AND
先评估的OR
。
*这是我的活动记录代码的一部分,在此之前和之后还有一些其他代码:
... some $this->db->where() ...
... some $this->db->where() ...
if($price_range) {
$price_array = explode('.',$price_range);
for($i = 0; $i < count($price_array); $i++) {
if($i == 0) {
$this->db->where('places.price_range',$price_array[$i]);
} else {
$this->db->or_where('places.price_range',$price_array[$i]);
}
}
}
... some $this->db->where() ...
... some $this->db->where() ...
问题来了,因为我正在使用$this->db->or_where()
它引入了一个OR
子句,该子句使运算符的优先级陷入混乱,而又无法(
)
用来更改顺序。
有什么办法可以解决这个问题?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。