【问题标题】:Model autoloading not working in CodeIgniter模型自动加载在 CodeIgniter 中不起作用
【发布时间】:2023-03-14 08:20:02
【问题描述】:

我正在自动加载这样的模型:

$autoload['model'] = array('user_model','article_model','settings_model','authenticate_model');

我还有下一个文件:

models/user_model.php:

<?php 
class User_model extends CI_Model {

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

?>

然后出现下一个错误:

找不到您指定的模型:User_model

如果直接访问这个文件:

您无权访问此服务器上的 /application/models/user_model.php。

那么问题的根源是什么?

【问题讨论】:

  • 你用的是什么版本的codeigniter?
  • 文件 user_model.php 似乎没有网络服务器的读取权限
  • @BeatAlex 来自 CI 主页的最新消息。
  • 将文件名改为User_model.php而不是user_model.php
  • 其实docs也有说明。

标签: php codeigniter heroku


【解决方案1】:

正如@BeatAlex 所说,这是我的模型的第一个字母是小写的问题。但是由于某种原因,当我之前更改名称并使用 git 使用此命令推送它时:

git commit -a -m "broke everythink"; git push heroku master

它没有更改文件的名称。

我必须删除文件,推送更改,然后再次创建它们并再次推送它们,现在它可以工作了。

【讨论】:

  • 我不是 git pro,所以无法判断这是否是正确的命令。很高兴我能帮上忙 :)
【解决方案2】:
  1. 将模型类名设为大写My_model
  2. 将模型php文件名设为小写“my_model”
  3. 使用小写(文件名)$this-&gt;load-&gt;model('my_model'); 加载模型

https://stackoverflow.com/a/22634263/1705099

【讨论】:

    【解决方案3】:
    1. 将模型文件命名为 User_model.php(注意大写 U)
    2. 将 autoload.php 中的代码更改为以下内容(再次注意 User_model 中的大写 U):$autoload['model'] = array('User_model'...
    3. 确保 User_model.php 文件具有正确的权限,即 755
    4. 您现在应该可以通过$this-&gt;User_model-&gt;somefunction(); 使用该模型了

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多