错误调用Codeigniter控制器中涉嫌非对象的成员函数

时间:2012-07-03 19:24:49

标签: php codeigniter-2

我收到错误

Fatal error: Call to a member function retrieve_products() on a non-object

控制器是:

<?php   
class Cart extends CI_Controller { // Our Cart class extends the Controller class  

   public function _construct()  
   {  
       parent::_construct(); // We define the the Controller class is the parent.  
       $this->load->model('Cart_model'); // Load our cart model for our entire class  
   }

   function index()  
   {  
      $data['products'] = $this->cart_model->retrieve_products(); // Retrieve an array with all products  
   }
}

模型是:

<?php   
class Cart_model extends CI_Model {

    function retrieve_products(){  
        $query = $this->db->get('products'); // Select the table products  
        return $query->result_array(); // Return the results in a array.
    }             
}

3 个答案:

答案 0 :(得分:1)

也许我们正在使用不同的版本(我有1.7.2),但要声明模型,CI_不会出现。我的工作代码相当于:

class Cart_model extends Model

此外,该课程应该大写:

$this->Cart_model->retrieve_products();

(而不是)

$this->cart_model->retrieve_products();

答案 1 :(得分:1)

我想说你的电话

$data['products'] = $this->cart_model->retrieve_products();

应该是:

$data['products'] = $this->Cart_model->retrieve_products();

即:cart_model中的大写“C”

答案 2 :(得分:0)

我认为你的拼写错误拼写构造函数为_construct而不是__construct这就是为什么codeigniter认为它是一个函数而不是类构造函数,而模型加载仅限于该函数。