ci3模型必须放在application/models/下,文件名和类名首字母大写且一致(如studentmodel.php),控制器中需用$this->load->model('studentmodel')加载并以$this->studentmodel->method()调用,禁用new实例、命名空间及大小写不匹配写法。

不需要改模型本身的写法,但加载和调用方式必须严格遵循 CodeIgniter 3 的规范,否则会直接报错。
模型文件命名和位置不能变
CI3 要求所有模型必须放在 application/models/ 目录下,文件名首字母大写、后缀为 .php(如 StudentModel.php),类名需完全一致(class StudentModel extends CI_Model)。升级时只要保持这个结构,原有模型代码逻辑无需改动。
控制器里不能再 new 实例
CI2 或手写 PHP 习惯中常用 new StudentModel(),这在 CI3 中会触发 “Class not found” 错误。必须改用框架加载机制:
-
正确写法:在控制器构造函数或方法内调用
$this->load->model('StudentModel'); -
调用方式:统一通过
$this->StudentModel->get_list();访问,不是(new StudentModel)->get_list() -
大小写敏感:Linux 环境下,
$this->load->model('studentmodel')或'studentModel'都可能失败,必须与文件名完全一致(如StudentModel.php→'StudentModel')
命名空间相关写法要删掉
CI3 默认不支持 PSR-4 和命名空间自动加载。如果旧项目里写了类似 use app\models\StudentModel; 或 namespace app\models;,这些全部要去掉——模型类本身不能声明 namespace,控制器里也不需要 use 引入。
方法内部逻辑通常不用动
模型里的数据库操作(如 $this->db->select()->from()->get())、数据验证、业务处理等,只要没用到已被移除的 CI2 特性(比如已废弃的 $this->db->active_record),基本可原样保留。注意检查是否用了 $query_builder = TRUE 替代旧版 $active_record = TRUE(CI3 默认开启 Query Builder)。











