如何将含SELECT子句子查询的原生SQL转为CodeIgniter查询构建器脚本
转换后的CodeIgniter查询构建器代码
CodeIgniter 3 版本
// 构建子查询 $subquery = $this->db->select('(SUM(kredit) - SUM(debet))', FALSE) ->from('kaskecil t2') ->where('t2.idkas <= t.idkas') ->get_compiled_select(); // 主查询 $query = $this->db->select('t.idkas, t.tglkas') ->select("($subquery) AS total", FALSE) ->from('kaskecil t') ->get(); // 获取查询结果 $result = $query->result();
get_compiled_select()用于生成子查询的原生SQL字符串- 第二个参数
FALSE是告知CodeIgniter不要自动给字段/表达式添加反引号,避免破坏子查询结构
CodeIgniter 4 版本
// 构建子查询 $subquery = $this->db->subquery() ->select('SUM(kredit) - SUM(debet)') ->from('kaskecil t2') ->where('t2.idkas <= t.idkas'); // 主查询 $query = $this->db->select('t.idkas, t.tglkas') ->selectSub($subquery, 'total') ->from('kaskecil t') ->get(); // 获取查询结果 $result = $query->getResult();
- CI4 提供了专门的
subquery()和selectSub()方法处理子查询,写法更简洁规范,无需手动处理SQL字符串转义
内容的提问来源于stack exchange,提问作者karisma
相关产品推荐
相关产品推荐

