2015-12-06 83 views
0

我已經嘗試了與其他職位有關的建議,但沒有喜悅。我試圖在CodeIgniter中創建一個從數據庫中獲取數據的模型,但它說沒有找到類CI_Model。我在主索引文件中的系統路徑設置正確,並且我已經在autoload文件中自動加載了這個模型,我找不出這個問題。我意識到很多功能都是一樣的,我還沒有完成寫它們,我使用第一個作爲佔位符。如何修復CodeIgniter:致命錯誤「Class'CI_Model'not found」

**編輯:我更新了所有這些文件與人的建議,並且仍然收到相同的錯誤。

模型

<?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); 
    } 
} 

?> 
+0

你的控制器的名稱是什麼? – thepiyush13

+0

我有一個名爲databaseConnection.php的控制器和一個frontController,我將爲它們添加代碼。 –

+0

你可以在'config/database.php'中選擇你的數據庫 –

回答

0

轉到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 

     } 
    } 
+0

我已經完成了所有這些,現在我得到了「不允許直接訪問腳本」。 –

0

這發生在我身上!我的本地Windows系統上的 這很好,但是當我遷移到Linux服務器(我的託管服務器)時,它會產生相同的錯誤: 這是由於Linux的大小寫敏感。

這些都是在linux 2個deffrent話:
'CI_Model'
'ci_model'

so i suggest you to check your model name , if you are saving model name to CI_model. and access it somewhere like "CI_Model".
here in Linux system CI_Model and CI_model are two different files.

+0

CI_Model應該是核心\ Model.php中的一個類。顯然,它應該知道如何自動找到。 –

+0

讓我們嘗試在application/core/MY_model 之後放置一個類,然後擴展您的模型,如abc_model extend my_model 它會在linux中生成錯誤,而在窗口中則沒問題。 –

0

有是在這裏一個邏輯錯誤。讓我們試着瞭解什麼是錯的。

  1. 你需要了解什麼是OOP(因爲笨是基於 吧)
  2. 你需要了解如何CodeIgniter的建築作品(裝載 和使用數據庫類,例如)
  3. 最後,需要重寫你的代碼。

我不能幫你與前兩個步驟,但最後,在你的第三步,你將不會

  1. 使用include()功能CodeIgniter的控制器
  2. 嘗試使用$this作爲$this->db->insert()的參數
  3. 定義__construct()以外的類定義的變量
  4. 嘗試echo任何類之外,從是CI_Controller

延長,但你會

  1. 使用多個數據庫配置
  2. 使用CI的型號爲DB包裹
  3. 加載您的模型簡單如$ this-> load-> model()

親愛的,Tanya Branag一,我知道,這並不是你等待的答案,但是你試圖使用這個框架而不試圖去理解它是如何工作的。請耐心閱讀,至少大約CI's Controllers,CI's ModelsCI's Database Configuration

+0

我意識到我不理解它,這就是爲什麼我要求幫助。例如,很多代碼都是從我正在使用的在線課程中的模板中獲取的,$ this-> db-> insert()以$ this作爲參數。這些教訓並未完全解釋這些原則。例如,他們沒有關於如何實現數據庫的任何說明,除了將它添加到database.php,我已經完成了。我在C#中使用OOP,CodeIgniter是唯一給我帶來麻煩的東西。 –

+0

@TanyaBranagan ok。所以..'$ this->' - 是指向當前對象的指針(在PHP中,不僅在CI中)。 '$ this-> db-> insert($ table,$ data)'函數至少需要2個參數:1st是一個帶有MySQL表格的字符串,第二個是數組要插入的對象key => value,其中key是表的列名稱。你不需要包含任何東西,因爲CI使用'$ this-> load->'構造來正確地加載任何東西。你也不能在'__constructor()'中使用''host','$ username'等因爲封裝。封裝在大多數語言中都是一樣的。 –

+0

@TanyaBranagan嘗試閱讀http://www.codeigniter.com/userguide3/tutorial/index.html以開始使用CI,這是CI工作的最清晰的解釋,我認爲。現在你的問題不是關於具體問題,而是關於一個普遍問題「如何使用CI?」。你可以在互聯網上找到很多教程,但我建議你從CI的手冊開始,他們非常好。祝你今天愉快! –

相關問題