我无法在我的模型或 autoload.php 中手动正确加载数据库库
行$query = $this->db->get('videos'); 在指示未加载数据库库的非对象错误上生成对成员函数 get() 的调用。
我尝试使用下面模型的构造函数中注释掉的两行来加载数据库库,但都返回错误。如果我取消注释 $this->load->database 我在非对象错误上收到对成员函数database()的调用,
如果我取消注释 $this->load->library('database') 我会在非对象错误上收到对成员函数library()的调用
<?php
class Videos_model extends CI_Model {
public function __construct()
{
parent::__construct();
//$this->load->database();
//$this->load->library('database');
}
public function get_videos()
{
$query = $this->db->get('videos');
}
}
同一行$this->load->database(); 在控制器中不会产生错误但 get() 函数错误。
class Videos extends CI_Controller {
public function __construct() {
parent::__construct();
$this->load->helper(array('url'));
$this->load->database();
//$this->load->library('database');
$this->load->model('videos_model');
$this->videos_model->get_videos();
}
}
我还在配置文件中设置了自动加载,
$autoload['libraries'] = array('database');
在我的 CI 日志文件中,指示数据库驱动程序已初始化 DEBUG - 2013-05-09 15:31:17 --> 数据库驱动程序类已初始化
这也是我的数据库配置,
$active_group = 'default';
$active_record = TRUE;
$db['default']['hostname'] = 'localhost';
$db['default']['username'] = 'dbusername';
$db['default']['password'] = 'dbpassword';
$db['default']['database'] = 'dbname';
$db['default']['dbdriver'] = 'mysql';
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = '';
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;
我在 Eclipse 中使用 CI 2.1.3 与 aptana studio 3 插件和 phpMyAdmin 3.5.8.1 和 Apache Server 2.2
更新:我已经确认从控制器而不是模型访问数据库是可行的。