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

CodeIgniter3调用groupBy()报错:未定义方法CI_DB_mysqli_driver::groupBy()

问题解决:Call to undefined method CI_DB_mysqli_driver::groupBy()

错误原因

  1. 方法名不匹配:CodeIgniter 3的数据库查询构造器中,分组查询的方法是group_by()(小写加下划线格式),你使用了驼峰式的groupBy(),这是CodeIgniter 4的写法,因此触发“未定义方法”的错误。
  2. 重复的FROM子句:模型代码里重复调用了$this->db->from('quiz_table');,这会生成语法错误的SQL语句,即便修复分组方法,后续也会出现问题。

修正后的模型代码

function getSingleQuizQuestionDataFromDB($quizId)
{        
    try {
        $this->db->select([
            'quiz_table.quizName',
            'quiz_table.creatorName',
            'quiz_table.rating',
            'question_table.questionId',
            'question_table.questionTitle',
            'question_table.correctAnswer',
            'answer_table.answer'
        ]);
        $this->db->from('quiz_table');
        $this->db->where('quiz_table.quizId', $quizId);
        $this->db->join('question_table', 'question_table.quizId = quiz_table.quizId', 'INNER');
        $this->db->join('answer_table', 'answer_table.questionId = question_table.questionId', 'INNER');
        // 替换为CodeIgniter3兼容的分组方法
        $this->db->group_by(['quiz_table.quizId', 'question_table.questionId']);
        $result = $this->db->get();

        $singleQuizQuestionData = $result->result_array();
        return $singleQuizQuestionData;
    } catch (Exception $e) {
        log_message('error', $e->getMessage());
        return [];
    }
}

关键修改点

  • 将groupBy()替换为group_by(),贴合CodeIgniter 3的API规范。
  • 删除重复的$this->db->from('quiz_table');调用,避免SQL语法错误。
  • 把多个分散的select()调用合并为数组形式,代码更简洁易维护。
  • 修复日志语句格式错误,原代码的日志级别参数格式不正确,调整为符合框架要求的写法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 13:01:03