CodeIgniter使用模型构造函数中的模型

时间:2012-09-06 11:44:46

标签: php codeigniter constructor

我有两个模型,第一个依赖于第二个模型,我需要在第一个构造函数中调用第二个模型中的方法。

到目前为止,我有这个:

用户

class User extends CI_Model {

    protected $_attributes = array();

    function __construct() {
        parent::__construct();
        $this->load->model('musers');
        foreach($this->musers->GetProfile() as $key => $val) {
            $this->_attributes[$key] = $val;
        }
    }

    function __set($key, $val) {
        return $this->_attributes[$key] = $val;
    }

    function __get($key) {
        return $this->_attributes[$key];
    }
}

我已将此模型放在autoload配置文件中,这就是我得到的内容:

A PHP Error was encountered
Severity: Notice
Message: Undefined index: load
Filename: models/user.php
Line Number: 20

Fatal error: Call to a member function model() on a non-object in  path\to\models\user.php on line 9

还有一些奇怪的东西 - 第一个错误(通知)指的是行return $this->_attributes[$key];,而它肯定应该引用行$this->load->model('musers');

我已尝试在musers模型之前在自动加载中加载模型user,但没有任何帮助。我已经尝试过搜索这个,但无法很好地制定查询,我确信我的问题有解决方案。

据我所知,这是因为在CodeIgniter设法加载加载器类本身之前调用了第二个模型的构造函数,但这很奇怪。

2 个答案:

答案 0 :(得分:4)

尝试:

function __construct() {
    parent::__construct();
    $CI =& get_instance();
    $CI->load->model("musers", "musers");
    foreach($CI->musers->GetProfile() as $key => $val) {
        ......
}

    ......

答案 1 :(得分:1)

试试这个

$CI = &get_instance();//you need to define the instance for loading the second model musers
$CI->load->model('musers');