Codeigniter Active Record 'where_or' grouping Codeigniter Active Record 'where_or' grouping codeigniter codeigniter

Codeigniter Active Record 'where_or' grouping


I know this is a little late, but I found this post when looking into it and found a better solution than the one proposed by Sean.

$name = 'Bob';$this->db->where('city', 'My City');$this->db->where('state', 'My State');$this->db->group_start();    $this->db->like('name', $name);    $this->db->or_like('name', $name);$this->db->group_end();


Yes. $this->db->where() allows you to write clauses manually. You could do this:

$this->db->where('city', 'My City');$this->db->where('state', 'My State');$this->db->where('(name LIKE %name1% OR name LIKE %name2%)', null, false);

Setting the third parameter for false prevents CodeIgniter from trying to add backticks to the clause.

Check out the Active Record documentation. The section titled $this->db->where(); explains the four methods you can use to set WHERE clauses.


These two functions group_start() and group_end() have been implemented in CodeIgniter 3.0.3. Here is little better implementation according to the original question.

$name1 = 'Bob';$name2 = 'John';$this->db->where('city', 'My City');$this->db->where('state', 'My State');$this->db->group_start();$this->db->like('name', $name1);$this->db->or_like(('name', $name2);$this->db->group_end();