我已经尝试了其他帖子中与此相关的建议,但没有任何乐趣。我试图在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是两个不同的文件
这里的逻辑有错误。让我们试着了解出了什么问题。
- 您需要了解什么是OOP(因为CodeIgniter基于它)
- 您需要了解CodeIgniter的体系结构是如何工作的(加载以及使用数据库类)
- 最后,您需要重写您的代码
前两步我帮不了你,但最后,在你的第三步,你不会:
- 在CodeIgniter控制器中使用
include()
函数 - 尝试使用
$this
作为$this->db->insert()
的参数 - 在类定义之外为
__construct()
定义变量 - 尝试
echo
类之外的任何内容,从CI_Controller扩展
但是您将:
- 使用多数据库配置
- 使用CI的模型进行DB包装
- 加载你的模型就像$this->Load->model()一样简单
亲爱的,Tanya Branagan,我知道,这不是你等待的答案,但你试图使用这个框架,却没有试图理解它是如何工作的。请耐心等待,至少阅读有关CI的控制器、CI的模型和CI的数据库配置