求助:将MySQL统计查询语句转换为Codeigniter查询语句
转换为CodeIgniter查询语句的实现方案
嘿,既然你已经熟悉SQL语法,把这条查询转成CodeIgniter的写法其实非常直观~下面分不同版本给你两种常用的实现方式,优先推荐Query Builder(框架自带的查询构造器),因为它能帮你自动处理SQL转义,更安全:
CodeIgniter 3 实现方式
简洁版(推荐)
直接用count_all_results方法一步到位:
// 在控制器或模型中使用 $runningCount = $this->db->where('status', 'Runing')->count_all_results('job_progress');
显式SELECT版
如果需要更明确的字段别名,也可以这么写:
$this->db->select('COUNT(*) as running_count'); $this->db->from('job_progress'); $this->db->where('status', 'Runing'); $query = $this->db->get(); // 获取结果 $result = $query->row(); $runningCount = $result->running_count;
CodeIgniter 4 实现方式
简洁版(推荐)
CI4的查询构造器用法更流畅:
// 先连接数据库(如果在模型中可以直接用$this->db) $db = \Config\Database::connect(); $runningCount = $db->table('job_progress')->where('status', 'Runing')->countAllResults();
显式SELECT版
同样支持自定义字段别名的写法:
$db = \Config\Database::connect(); $query = $db->table('job_progress') ->select('COUNT(*) as running_count') ->where('status', 'Runing') ->get(); // 获取单行结果 $result = $query->getRow(); $runningCount = $result->running_count;
原生查询方式(不推荐,除非特殊场景)
如果你更习惯直接写原生SQL,也可以这么执行:
CI3 原生写法
$query = $this->db->query("SELECT COUNT(*) FROM `job_progress` WHERE status='Runing'"); // 获取结果值 $runningCount = $query->row_array()[0];
CI4 原生写法
$db = \Config\Database::connect(); $query = $db->query("SELECT COUNT(*) FROM `job_progress` WHERE status='Runing'"); $runningCount = $query->getRowArray()[0];
内容的提问来源于stack exchange,提问作者Azmath Ullah Rakib
相关产品推荐
相关产品推荐

