Codeigniter Active Record 'where_or' grouping

前端 未结 3 1776
你的背包
你的背包 2020-12-11 04:00

Is it possible to group and_where / or_where / or_like... statements together so as not to mix with other and/where statements.

Something that would result

相关标签:
3条回答
  • 2020-12-11 04:25

    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();
    
    0 讨论(0)
  • 2020-12-11 04:25

    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();
    
    0 讨论(0)
  • 2020-12-11 04:40

    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.

    0 讨论(0)
提交回复
热议问题