codeigniter之嵌套where子句codeigniter mysql查询
有什么方法可以嵌套 where 子句吗?例如:
SELECT * FROM table WHERE (colA = 'valueA' AND colB = 'valueB') OR (colA = 'valueC' AND colB = 'valueD')
我知道我可以将其写入query
函数调用,例如:
$this->db->query("SELECT ...")
但我想知道在 codeigniter 中是否有一种“正确”的方法来做到这一点,例如:
$this->db->where(array('colA'=>'valueA'), array('colB'=>valueB'))->or_where(array('colA'=>'valueC'), array('colB'=>'valueD'))
谢谢
请您参考如下方法:
有了 codeigniter 3,现在有了,看更新吧!
没有
在这些情况下,我通常只是将零件构建在一个长字符串中,如下所示: p> where()
方法使用变体与数组允许您这样做。
$this->db->where("
(
(colA = '".$this->db->escape($v0)."' and colB = '".$this->db->escape($v1)."')
or
(colA = '".$this->db->escape($v2)."' and colB = '".$this->db->escape($v3)."')
)
");
转义可以通过 escape
(做一些自动检测)或 escape_str
或 escape_like_str
手动完成,具体取决于参数预期是什么或什么正在使用的谓词。
如果我在一个使用 Datamapper library 的项目中,我更喜欢在构建此类查询时使用 group_start()
和 group_end()
方法,它们有一个 lot of different flavor其中。
更新
现在,Codeigniter 3 have grouping methods在查询构建器中,因此您可以执行 ->group_start()
和 ->group_end()
。
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。