如何修复CodeIgniter:致命错误“;类';CI_Model';未找到”;


How to fix CodeIgniter: Fatal error "Class 'CI_Model' not found"

我已经尝试了其他帖子中与此相关的建议,但没有任何乐趣。我试图在CodeIgniter中创建一个从数据库获取数据的模型,但它说找不到类CI_model。我在主索引文件中的系统路径设置正确,并且我已经在自动加载文件中自动加载了这个模型,我无法解决问题。我意识到很多函数都是一样的,我还没有写完,我正在使用第一个函数作为占位符。

**编辑:我用人们的建议更新了所有这些文件,但仍然收到同样的错误。

型号

<?php
class Model_appointments extends CI_Model {
    public function __construct()
    {   
        parent::__construct();
    }
    public function getAppointments() 
    {
        $query = $this->db->get('appointments');
        return $query->result();
    }
    public function getActiveAppointments() 
    {
        $query = $this->db->get('appointments');
        return $query->result();
    }
    public function getCancelledAppointments() 
    {
        $query = $this->db->get('appointments');
        return $query->result();
    }
    public function addAppointments() 
    {
        $this->name    = $_POST['name'];
        $this->details = $_POST['details'];
        $this->date    = time();
        $this->db->insert('appointments', $this);
    }
}
?>

前控制器

<?php 
include 'application/controllers/databaseConnection.php';
include 'application/models/Model_appointments.php';
if ( ! defined('BASEPATH')) exit('No direct script access allowed');
    class Controller_name extends CI_Controller
    {
        public function  __construct()
        {
            parent::__construct();
            $this->load->model('Model_appointments'); #load Model
        }
    }
class Front_controller {
    public function startFrontController() {
        $newDatabase = new Mydb('localhost', 'root', '', 'webinnovate');
    }
}
$newController = new Front_controller();
echo $newController->startFrontController();
$newAppointments = new Model_appointments();
$newAppointments->getAppointments();
?>

**控制器

<?php 
$host = 'localhost';
$username = 'root';
$password = '';
$dbname = 'webinnovate';
class Mydb {
    public $query;
    public $myConnection;
    public function __construct($host, $username, $password, $dbname) 
    {
        //establish connection
        $this->myConnection = mysqli_connect($host, $username, $password, $dbname);
    }
}
?>

转到config/database.php

$db['default'] = array(
    'dsn'   => '',
    'hostname' => 'localhost',
    'username' => 'root', # user name
    'password' => '', # password
    'database' => 'webinnovate', # Database name
    'dbdriver' => 'mysqli',
    'dbprefix' => '',
    'pconnect' => FALSE,
    'db_debug' => (ENVIRONMENT !== 'production'),
    'cache_on' => FALSE,
    'cachedir' => '',
    'char_set' => 'utf8',
    'dbcollat' => 'utf8_general_ci',
    'swap_pre' => '',
    'encrypt' => FALSE,
    'compress' => FALSE,
    'stricton' => FALSE,
    'failover' => array(),
    'save_queries' => TRUE
);

config/autoload.php

$autoload['libraries'] = array('database'); #load database library

在您的控制器中

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
    class Controller_name extends CI_Controller
    {
        public function  __construct()
        {
            parent::__construct();
            $this->load->model('modelAppointments'); #load Model
        }
    }

这件事发生在我身上!在我的本地windows系统上,这很好,但当我迁移到Linux服务器(我的托管服务器)时,它会产生同样的错误:这是由于Linux的大小写敏感性。

以下是linux中的两个deffrent单词:
"CI_Model"
'ci_model'

所以我建议你检查一下你的模型名称,如果你正在保存模型name到CI_model。并在类似"CI_Model"的地方访问它
在Linux系统中CI_Model和CI_Model是两个不同的文件

这里的逻辑有错误。让我们试着了解出了什么问题。

  1. 您需要了解什么是OOP(因为CodeIgniter基于它)
  2. 您需要了解CodeIgniter的体系结构是如何工作的(加载以及使用数据库类)
  3. 最后,您需要重写您的代码

前两步我帮不了你,但最后,在你的第三步,你不会

  1. 在CodeIgniter控制器中使用include()函数
  2. 尝试使用$this作为$this->db->insert()的参数
  3. 在类定义之外为__construct()定义变量
  4. 尝试echo类之外的任何内容,从CI_Controller扩展

但是您将

  1. 使用多数据库配置
  2. 使用CI的模型进行DB包装
  3. 加载你的模型就像$this->Load->model()一样简单

亲爱的,Tanya Branagan,我知道,这不是你等待的答案,但你试图使用这个框架,却没有试图理解它是如何工作的。请耐心等待,至少阅读有关CI的控制器、CI的模型和CI的数据库配置