2012-11-02 73 views
1

我是CI的新手,我想更新mysql中的一些数据。因此,这里是我的控制器Codeigniter控制器模型调用失败

class Ci_update extends CI_Controller 
{ 
    function __construct() { 
     parent::__construct(); 
    } 

    function index() 
    { 
     $data = array 
     (
      'title' => 'Data Structure using C', 
      'text' => 'Data Structure Using C, for, IIIrd Sem VTU CSE students' 
     ); 
     $id = 4 ; 

     $this->load->model('ci_update_model'); 
     $this->ci_update_model($data,$id); 
    } 
} 

,我的模式是:

class Ci_update_model extends CI_Model 
{ 
    function __construct() { 
     parent::__construct(); 
    } 

    function updateData($data,$id) 
    { 
     $this->db->where('id',$id); 
     $this->db->update('data',$data); 
    } 
} 

但是,当我试图运行程序,它说:Call to undefined method Ci_update::ci_update_model() in C:\wamp\www\ci\application\controllers\ci_update.php on line 19 什么wrom我在干嘛?

+0

当哟你已经加载模型,你必须调用其中的函数$ this-> ci_update_model-> function($ var)...不只是$ this-> ci_update_model($ var)...在你的情况下,你正在寻找函数ci_update_model在控制器类内部.. – Svetoslav

回答

6

使用如下

$this->load->model('ci_update_model'); 
$this->ci_update_model->updateData($data,$id); 
-3
在控制器的建筑工

加入这一行

$this->load->model('Ci_update_model'); 

和错误将得到解决

+0

如果您在构造函数中加载模型,则不需要在控制器文件的其余函数中加载模型。所以我建议你在构造函数中加载模型,避免在你使用的每一个函数中使用'$ this-> load-> model('Ci_update_model');'。 –

+0

问题不在加载模型,它在调用它内部的函数。如果他需要它只是在一个控制器函数为什么要加载它的所有(在构造函数中)? – Svetoslav

+0

在CI中,我们使用了几个其他函数以及索引函数。 –

0

做到这一点改变了你的控制器代码,休息是相同的:

$this->load->model('ci_update_model'); 
$this->ci_update_model->updateData($data,$id);