我想使用Codeigniter中的Active Records生成以下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中的所有东西.
UPDATE
我的sql代码根据传递给模型方法的某些参数的值动态生成.无法使用括号的问题会导致问题,因为运算符优先级是在OR之前首先评估AND.
... 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子句,它将操作符优先级引入混乱,无法使用()来更改顺序.
有没有办法解决这个问题? **
您可以使用一个大字符串.
$this-> db-> select() – > from(‘users’) – > where(“name!=’Joe’AND(age< 69 OR id> 50)“);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。