Call to a member function get() on a non-object
本帖最后由 7777777 于 2011-3-28 11:46 编辑我在model当中调用$query = $this->db->get("users");时候,报出
Call to a member function get() on a non-object错误,debug中得出$this->db未被载入
但是奇怪的是我在Controller中调用$query = $this->db->get("users");的时候一切正常。
不知是何原因,另外,我已经把'database'添加到$autoload['libraries']当中了。。。:sleepy:
另外:
CI的版本是:2.0.1
以下是DB的配置
$active_group = 'default';
$active_record = TRUE;
$db['default']['hostname'] = 'localhost';
$db['default']['username'] = 'root';
$db['default']['password'] = '';
$db['default']['database'] = 'test';
$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; 你的模型没有调用父类构造函数吧?
贴下你的模型的构造函数。 以下是我的模型的代码:
class User_Model extends CI_Model {
var $id = "";
var $userName = "";
var $pwd = "";
function __construct() {
parent::__construct();
}
function get_user_list() {
var_dump($this);
$query = $this->db->get("users");
return $query->result();
}
} 原因找到了,我为了能在IDE中获得Model和Controller的提示功能,我在CI_Model中添加了一些个变量的声明,例如:
var $benchmark;
var $calendar;
var $config;
var $db;
等等
只要把上面的声明删掉,就不会报错了,但是为什么Controller中也加了这些的声明,为什么就不报错了,难道是CI_Model类初始化变量加载顺序的问题??具体没看源码,不大清楚了。表示疑问 你的模型看起来没问题,你的控制器呢? 也不是控制器的问题,我只要把后加到CI_Model类中的变量都删除了,就不报错了。多谢了,哪天有空看看源码这个部分是怎么写的。 果然啊。。。 当一个模型被载入时,它并不会自动连接数据库。以下方法可以使您连接数据库:
您可以使用标准方法来连接数据库(说明), 也可以通过控制器或者您的自定义模型。
您可以把第三个参数设置为TRUE来使模型装载函数自动连接数据库,连接配置可以在您的数据库配置文件中可以定义:
$this->load->model('Model_name', '', TRUE);
页:
[1]