2017-01-22 45 views
0

在笨3.1.3我在应用/核心扩展CI_Model/MY_Model.php:

class MY_Model extends CI_Model { 

    public function __construct($id = NULL) { 
     parent::__construct(); 
     $this->load($id); 
    } 

    public function load($id) { 
     $this->db->where('id', $id); 
     $this->db->limit(1); 
     $query = $this->db->query($this->_table); 
     if ($row = $query->result()) { 
      // @todo Process results 
     } 
     // Free the resources. 
     $query->free_result(); 
    } 

} 

我User_model看起来是这样的:

class User_model extends MY_Model { 

    public function __construct($id = NULL) { 
     parent::__construct($id); 
    } 

} 

我也延长了应用程序/核心/ MY_Controller中的CI_Controller如下:

class MY_Controller extends CI_Controller { 

    public function __construct() { 
     parent::__construct(); 
     $this->load->model('User_model'); 
    } 
} 

我自动加载数据库连接通货膨胀/配置/ autoload.php为:

$autoload['libraries'] = array('database'); 

不加载User_model在控制器我能够运行迁移,所以数据库连接配置正确。但是当我添加$ this-> load-> model('User_model')时,出现错误“Undefined property:User_model :: $ db”。

如果我让User_model扩展CI_Model,它运行时没有错误,并且在主页的控制器中有一个var_dump,它显示数据库是正确自动加载的。但是,只要我把MY_Model置于中间,数据库类在模型中未定义,并且模型中的$ this-> load返回NULL,所以看起来模型没有正确构造。

我只能想象这是一个非常小的错误,但我一直盯着它几个小时,在几次休息之间,我只是没有看到它。其他人能帮助我吗?

回答

0

从控制器,可以说A_controller

$this->load->library('MyLib'); 

MyLib中,我原来的问题是,该块

$ci = &get_instance(); 
    $ci->load->model('my_model'); 

    $this->active_model = $ci->my_model; 

然后奇迹来,当它成为

$ci = &get_instance(); 
    $ci->load->model('my_model'); 
    $ci->my_model->db = & $ci->db; 

    $this->basic_model = $ci->my_model; 

当CI加载模型$ db属性与CI一起。 因此,当您在模型中调用$ this-> db时,这意味着您希望“my_model”拥有该属性,对吗? 我所做的只是将属性从CI链接到my_model!