You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在CodeIgniter中用Active Record实现含COUNT(po_id)的统计查询?

转换后的CodeIgniter Active Record实现方案

嘿,这事儿不难,我帮你把这条原生SQL完美转换成CodeIgniter的Active Record写法,完全匹配你的统计需求,还符合框架的最佳实践:

CodeIgniter 3.x 版本写法

// 假设在你的Model类中编写这段代码
public function get_registration_stats() {
    // 选择需要的字段和统计值,第二个参数FALSE防止框架自动给函数加反引号
    $this->db->select('position.po_name AS position, activity.ac_name AS activity, COUNT(register.po_id) AS regis', FALSE);
    
    // 关联activity表(INNER JOIN,默认就是INNER类型)
    $this->db->join('activity', 'register.ac_id = activity.ac_id');
    
    // 关联position表
    $this->db->join('position', 'register.po_id = position.po_id');
    
    // 添加WHERE条件
    $this->db->where('register.regis_status', 2);
    $this->db->where('activity.ac_id', 2);
    
    // 按指定字段分组
    $this->db->group_by(array('register.ac_id', 'register.po_id'));
    
    // 执行查询,主表为register
    $query = $this->db->get('register');
    
    // 返回结果集,根据需求选result()(对象数组)或result_array()(普通数组)
    return $query->result();
}

关键部分说明

  • select()方法的第二个参数FALSE必须加上,因为我们用到了COUNT()聚合函数,不加的话CodeIgniter会自动给函数名加上反引号,导致SQL语法错误。
  • join()方法默认使用INNER JOIN,和你的原生SQL逻辑一致;如果需要其他关联类型(比如LEFT JOIN),可以传递第三个参数指定,比如$this->db->join('activity', 'register.ac_id = activity.ac_id', 'LEFT')。
  • group_by()支持传递数组来指定多个分组字段,完美对应原生SQL的GROUP BY register.ac_id,register.po_id。

如果你用的是CodeIgniter 4.x

CI4改用了Query Builder语法,写法略有不同,给你参考:

// 在CI4的Model中
public function get_registration_stats() {
    $builder = $this->db->table('register');
    
    $builder->select('position.po_name AS position, activity.ac_name AS activity, COUNT(register.po_id) AS regis', FALSE)
            ->join('activity', 'register.ac_id = activity.ac_id')
            ->join('position', 'register.po_id = position.po_id')
            ->where('register.regis_status', 2)
            ->where('activity.ac_id', 2)
            ->groupBy(['register.ac_id', 'register.po_id']);
    
    return $builder->get()->getResult();
}

内容的提问来源于stack exchange,提问作者Book

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:55:05