是否可以将 group 和_where / or_where / or_like ...语句放在一起,以免与其他和/ where语句混合使用。
会导致
的东西WHERE city ='My City'AND state ='My State'AND(name LIKE%name1% 或者命名LIKE%name2%)
答案 0 :(得分:16)
我知道这有点晚了,但我在查看它时找到了这篇文章,并找到了比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();
答案 1 :(得分:12)
是。 $this->db->where()
允许您手动编写子句。你可以这样做:
$this->db->where('city', 'My City');
$this->db->where('state', 'My State');
$this->db->where('(name LIKE %name1% OR name LIKE %name2%)', null, false);
将第三个参数设置为false可防止CodeIgniter尝试向该子句添加反引号。
查看Active Record documentation。标题为 $ this-> db-> where(); 的部分解释了可用于设置 WHERE 子句的四种方法。
答案 2 :(得分:1)
这两项功能group_end()
和$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();
已在 CodeIgniter 3.0.3 中实施。根据原始问题,这里有更好的实现。
name