【问题标题】:Unable to locate the model you have specified - CodeIgniter Issue无法找到您指定的模型 - CodeIgniter 问题
【发布时间】:2017-05-06 18:15:43
【问题描述】:

我遇到无法定位模型错误。

$this->load->model('1/Gift_model');

我的模型文件名是 /models/1/ 中的 gift_model.php

我通过以下方式声明模型。

class Gift_model extends CI_Model {

根据 CodeIgniter 的文档,我正在以正确的方式进行操作。有什么建议么?我有 5 个其他模型以完全相同的方式命名,并且它们都可以正常加载。

【问题讨论】:

  • 我不认为 codeigniter 在它的结构中允许像 1 这样的文件夹。
  • Codeigniter 允许您将模型放在模型内部的文件夹中。 ellislab.com/codeigniter/user-guide/general/models.html
  • 正确。 “如果您的模型位于子文件夹中,请包含模型文件夹中的相对路径”。 '1' 是我的子文件夹。我有许多其他具有相同结构的模型可以加载到平台的其他部分。
  • 亚伦是正确的。 $this->load->model('1/gift_model'); Marcel 是对的——文件名上的大写字母有时会像他说的那样工作——但并非在所有平台上都有效。因此,只需对所有内容都使用小写 - 除了模型或类的第一个字母。嘿,当你阅读这篇文章时——有一个名为“1”的模型文件夹——你可能想重新考虑一下。

标签: php codeigniter


【解决方案1】:
  1. 使模型类名大写 My_model
  2. 制作模型php文件名小写my_model
  3. 使用小写(文件名)加载模型$this->load->model('my_model');

【讨论】:

  • 2.为我修复了它显然在某些环境中 PHP 文件名本身是大写的很重要。非常有趣。
【解决方案2】:

$this->load->model('1/Gift_model'); 应该是 $this->load->model('1/gift_model');。此加载参数和 php 文件名小写,文件中的类名大写(您有三个正确的两个)。

【讨论】:

    【解决方案3】:

    http://www.codeigniter.com/userguide3/installation/upgrade_300.html

    从 CodeIgniter 3.0 开始,所有类文件名(库、驱动程序、控制器和模型)都必须以类似 Ucfirst 的方式命名,或者换句话说 - 它们必须以大写字母开头

    以前是小写开头的模型文件,后来改了。

    【讨论】:

      【解决方案4】:

      确保模型名是Gift_model,类名也是Gift_model

      class Gift_model extends CI_Model
      {
      
      }
      

      但加载类是 '1/gift_model' 而不是 'Gift_model'

      $this->load->model('1/gift_model');
      

      希望对你有帮助

      【讨论】:

        【解决方案5】:

        问题是当您在 CodeIgniter 中加载 Gift_model 时,您的文件名全为小写 (gift_model.php)。将文件名更改为 Gift_model.php 或相应地更新您的代码。

        【讨论】:

        • 根据codeigniter doc,文件名应该是小写的,你声明它是大写的并称之为大写。 ellislab.com/codeigniter/user-guide/general/models.html
        • Marcel 你是对的,但它并不适用于所有平台,所以最好只使用小写。
        • @PhillipJamesRoth 该类应定义为第一个字母为大写。但是,正如文档所说:“文件名将是您的类名的小写版本。”同样,加载函数应该通过 文件 名称的大小写,而不是类名。
        【解决方案6】:

        你是在为模型调用父级的构造函数吗?

        class Gift_model extends CI_Model {
            function __construct()
            {
                parent::__construct();
            }
        

        【讨论】:

          【解决方案7】:
          -> Model Class name must be Uppercase
          -> Model PHP file name must be Lowercase
          -> Load Model using Lowercase(filename): $this->load->model('gift_model', TRUE);
          

          【讨论】:

            【解决方案8】:

            从 CodeIgniter 3.0 开始,所有类文件名(库、驱动程序、控制器和模型)都必须以类似 Ucfirst 的方式命名,或者换句话说 - 它们必须以大写字母开头。

            (Source: CI docs)

            【讨论】:

              【解决方案9】:

              `如果使用 codeignitor 3.1.3
              一切都一样,否则显示错误 类名 => My_model

              文件名 => My_model.php

              加载模型 => $this->load->model('My_model');

              调用函数 => $this->My_model->function();`

              【讨论】:

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