0

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

到目前为止,我有这个:

用户

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

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

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

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

4

2 回答 2

4

尝试:

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

    ......
于 2012-09-06T11:47:24.967 回答
1

像这样试试

$CI = &get_instance();//you need to define the instance for loading the second model musers
$CI->load->model('musers');
于 2012-09-06T11:49:04.567 回答