我有两个模型,第一个依赖于第二个模型,我需要在第一个构造函数中调用第二个模型中的方法。
到目前为止,我有这个:
用户
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设法加载加载器类本身之前调用了第二个模型的构造函数,但这很奇怪。
答案 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');