对非对象代码点火器上的成员函数的调用

call to a member function on a non object codeigniter

本文关键字:成员 函数 调用 点火器 对象 代码      更新时间:2023-09-26

所以这真的很令人愤怒,但我得到了:

致命错误:调用成员函数insert_review()在第58行上/application/controllers/user_submissions.php中的非对象上

  1. 我已经在配置中预装了数据库库,所以这与此无关
  2. 我的控制器和型号拼写正确

ajax调用

$.ajax({
    type: "POST",
    url: 'www.mydomain.com/user_submissions/save_entry',
    data: { 'user_email' : user_email, 'data' : dataobj}
}).done(function(data) {}).fail(function() {}).always(function() {});
}
 });

我在我的控制器中接收数组中的数据:但是我不能将其发送到我的模型,为什么?

用户提交控制器:

class User_submissions extends CI_Controller {
    public function __construct()
    {
         parent::__construct();
         $this->load->model('add_entry');
    }
    public function save_entry()
    {
         $user_data = $this->input->post();
         $user_data['date_created']  = date("Y-m-d H:i:s");    
         $this->add_entry->insert_review($user_data);
    }
} 

我的模型:

class add_entry extends CI_Model
{
    private $user_reviews = 'User_review';
    public function insert_review($data)
    {
       //i never reach this point:
       $this->db->insert($this->user_reviews, $data); 
       echo $this->db->last_query();
    }
}

我猜您的模型名称不正确,类名的第一个字母必须大写,其余字母必须小写。确保您的类扩展了基本Model类。

查看此链接了解更多信息型号代码点火器

所以解决方案是在我的构造函数中注释掉:$this->load->model('add_entry');,并在我的函数中调用它:

public function save_entry()
    {
         $this->load->model('add_entry');
         $user_data = $this->input->post();
         $user_data['date_created']  = date("Y-m-d H:i:s");    
         $this->add_entry->insert_review($user_data);
    }

有人能向我解释一下为什么这样做吗?

试试这个。。你已经用像这样的构造方法加载了你的模型

class add_entry extends CI_Model
{
    private $user_reviews = 'User_review';
    function __construct()
    {
        parent::__construct(); //load construct method
    }
    public function insert_review($data)
    {
       //i never reach this point:
       $this->db->insert($this->user_reviews, $data); 
       echo $this->db->last_query();
    }
}

我认为您的模型加载不正确,请检查您的模型类路径。

$this->load->model('blog/queries');