【问题标题】:CodeIgniter 3 Unable to locate the model you have specifiedCodeIgniter 3 找不到你指定的模型
【发布时间】:2015-08-05 21:30:18
【问题描述】:

我收到此错误:

Unable to locate the model you have specified: Users_model

CodeIgniter 是第 3 版。文件名为 Users_model.php。它位于application\models,它是这样的:

defined('BASEPATH') OR exit('No direct script access allowed');
class Users_model extends CI_Model {

    public function __construct()
    {
        parent::__construct();
    }

[...]
}

我从这样的控制器调用它:

$this->load->model('users_model');

有趣的是,它可以在本地 mongoose 服务器上运行,但在我将其部署到 heroku 服务器时却不行。

【问题讨论】:

  • 试试大写。 $this->load->model('Users_model');
  • 这在本地工作,包括大写和小写首字母。实际上我尝试了各种上下组合。但是没有一个适用于heroku,就像它真的找不到文件一样。
  • 所有其他型号都工作正常吗?尝试自动加载此模型。并确保 User_model 文件部署在 heroku 上。
  • 伙计,3 天后终于弄明白了,哈哈。回答您的问题:没有其他模型,这是我尝试的第一个模型,是的,确实部署了 Users_model.php。但是为了确认它被部署了,我做了heroku run bash并浏览到models目录,看到它被部署为users_model.php,而不是Users_model.php,因为我第一次部署时,它没有大写,git不是' t 更新文件名大小写更改。这就是为什么它可以在本地服务器上运行,但不能在 heroku 上运行。为了解决这个问题,我做了git config core.ignorecase false。谢谢@Kamran!
  • 太棒了 :) 有时小事会造成大问题。

标签: php codeigniter heroku


【解决方案1】:

试试这个。

  1. 在您的模型中,文件名应该是users_model.php
  2. 模型内部应该是 (Users_Model)

    class Users_Model extends CI_Model{}.

  3. 打电话时使用$this->load->model('Users_Model');

【讨论】:

  • 这些规则是对以前版本的 codeigniter 的更改吗?自 v2.x 以来我没有使用过 codeigniter,我意识到他们已经对文件名中字母的大写等进行了更改。谢谢
  • 在codeigniter 3中,users_model.php应该像Users_model.php一样大写
【解决方案2】:

您的 git 可能配置为忽略文件名中的大小写更改。这样做的效果是:对已经部署(即仅被修改)的文件的文件名进行的任何本地更改都不会镜像到远程存储库 (heroku)。

例如,如果您首先部署了一个名称为 users_model.php 的文件全部小写。即使您将文件的本地版本更改为 Users_model.php 且“U”大写,远程也不会反映此更改。

如何解决:告诉 git 更新文件名大小写更改,运行以下命令:

git config core.ignorecase false

感谢@Kamram 让我弄清楚这一点,感谢@FeanDoe 建议我回答这个问题。

【讨论】:

  • 你好朋友,你能帮帮我吗,我是codeigniter的初学者,git文件在哪里?
【解决方案3】:

在文件夹 "application/models" 中,您应该将文件名从 "users_model.php" 更改为 "Users_model.php"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-28
    • 2015-04-14
    • 2012-08-15
    相关资源
    最近更新 更多