Codeigniter模型错误

时间:2011-12-24 16:38:14

标签: php codeigniter

我在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,所以在调用该方法之前我无法看到此属性的值。

我尝试使用谷歌搜索其他几个案例,但没有一个符合我的情景,而且没有一个可以解决我的问题。

3 个答案:

答案 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();

您使用错误的名称调用了自己的函数。