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

遇到未捕获RuntimeException:无法定位User_model模型,求解决方案

解决CodeIgniter中无法定位User_model的问题

别着急,我们一步步来排查和修复你遇到的问题:

一、先搞定「无法定位User_model」的核心报错

CodeIgniter(尤其是2.x/3.x版本)对模型的命名、存放路径有严格要求,这是最常见的报错根源:

  • 模型文件命名规则:必须将模型文件命名为 User_model.php(首字母大写,后缀固定为_model.php),并且放在 application/models/ 目录下。如果模型在子目录(比如application/models/auth/),加载时要带上路径:$this->load->model('auth/User_model');
  • 类名必须和文件名一致:模型文件里的类定义必须严格对应文件名:
<?php
class User_model extends CI_Model {
    // 你的业务方法写在这里
}
?>
  • 正确加载模型:在控制器里加载模型时,两种写法都能生效(CI会自动处理大小写):
$this->load->model('User_model');
// 或者
$this->load->model('user_model');

如果之前改名字没用,大概率是文件名/类名的大小写没匹配,或者文件放错了目录。

二、修复你模型代码里的语法错误

你提供的模型代码有几个明显的语法问题,就算模型加载成功也会报错:

  1. 缺少完整的类和方法结构:完整的验证用户方法应该是这样的:
<?php
class User_model extends CI_Model {
    public function __construct() {
        parent::__construct();
        $this->load->database(); // 初始化数据库连接
    }

    public function check_user($username, $password) {
        $this->db->where(array('username' => $username, 'password' => $password));
        $result = $this->db->get('users');
        
        if ($result->num_rows() == 1) {
            // 你之前的返回写法错误,这里直接返回用户ID即可
            return $result->row()->id; 
            // 或者先存变量再返回:
            // $user_id = $result->row(0)->id;
            // return $user_id;
        } else {
            return false;
        }
    }
}
?>
  1. 错误的返回语句:你写的$return->$result->row(0)->id;完全不符合语法,这里应该是直接返回查询结果的ID,或者赋值给变量后返回。
  2. 括号不匹配:你提供的代码末尾有两个}},但缺少开头的类和方法的{,必须保证代码结构完整闭合。

三、额外排查小细节

  • 检查application/config/autoload.php是否自动加载了数据库:如果没开启自动加载,一定要在模型的构造函数里手动调用$this->load->database();,否则会出现$this->db未定义的错误。
  • 确认CI版本:从报错路径看你用的是CI2/3版本,按上面的规则调整就好;如果是CI4,模型规则会完全不同,但你的报错明显对应旧版本。

按这些步骤调整后,应该就能解决模型找不到的问题,同时修复代码里的语法错误啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 03:48:25