在 Codeigniter 中对 WHERE 子句进行分组
要在复杂条件下对多个 WHERE 子句进行分组,可以使用 group_start() 和 group_end() Codeigniter 中的方法。这些方法允许您创建嵌套 WHERE 条件。
Codeigniter 3:
$this->db->select() ->from('users') ->where('name !=', 'Joe') ->group_start() // Open bracket ->where('age <', 69) ->or_where('id <', $id) ->group_end(); // Close bracket
Codeigniter 4:
$builder->select('*') ->from('users') ->where('name !=', 'Joe') ->groupStart() ->where('age <', 69) ->orWhere('id <', $id) ->groupEnd();
修改后的代码使用 group_start() 和 group_end() 将年龄和 id 条件括在括号中。这确保首先评估 AND 条件(age
处理动态查询:
您的原始查询是根据用户参数动态生成的。要在这种情况下使用分组方法,您可以将所需的 WHERE 条件包含在循环中,并适当地使用 group_start() 和 group_end()。if ($price_range) { $price_array = explode('.', $price_range); $this->db->where('name !=', 'Joe'); for ($i = 0; $i < count($price_array); $i++) { if ($i === 0) { $this->db->group_start(); $this->db->where('places.price_range', $price_array[$i]); } else { $this->db->or_where('places.price_range', $price_array[$i]); } } $this->db->group_end(); }
以上是如何在 CodeIgniter 中针对复杂条件对 WHERE 子句进行分组?的详细内容。更多信息请关注PHP中文网其他相关文章!