我在my_model.php
文件夹中创建了一个新的模型类/models
,并在其中创建了一个函数来加载所有元素:
function get_all(){
$query = $this->db->get('test'); //test is my table
return $query->result();
}
在控制器中,我实例化了类并调用了方法;
$this->load->model('my_model');
$res = $this->my_model->get_all();
但是,这引发了我的错误说:
致命错误:在第7行的/var/www/testapp/application/models/my_model.php中调用非对象的成员函数get()
第7行指向我使用$this->db
的代码部分。我试图查看$db
的值,但我认为它是魔术访问器__get
和__set
,所以在调用该方法之前我无法看到此属性的值。
我尝试使用谷歌搜索其他几个案例,但没有一个符合我的情景,而且没有一个可以解决我的问题。
答案 0 :(得分:5)
您必须先加载数据库
$this->load->database();
所以,所有代码:
function get_all(){
$this->load->database();
$query = $this->db->get('test'); //test is my table
return $query->result();
}
或,在您的__construct
方法中加载数据库。
或,IMO,最好通过更改application/config/autoload.php
自动加载数据库,示例如下。
$autoload['libraries'] = array('database','form_validation'); //form_validation is for example only
答案 1 :(得分:3)
在CodeIgniter中,您应该在使用之前加载数据库模型。
使用$this->load->database();
加载数据库模型。
答案 2 :(得分:2)
您的错误实际上非常简单:
return $query->result;
应该是:
return $query->result();
有时,PHP错误报告的行号与您认为的不完全相同,解析器只是做得最好并报告发现错误的位置。
还有一个问题:
$res = $this->my_model->getAll();
应该是:
$res = $this->my_model->get_all();
您使用错误的名称调用了自己的函数。