-1

所以我已经尝试了几个小时来让它工作但不能!

我有一个加载其他模型的基本模型。这些其他模型在它们的构造函数中引用了基本模型中的一些变量。例如:

用户型号:

检查用户是否登录,如果是,让他加载他的关系模型。

关系模型:

在构建过程中尝试加载该用户的关系。$this->user->id因此,例如,我尝试了,但它引发了错误" Undefined property "

我试图将我的基本模型转换为库并再次尝试,但它不起作用!

现在这是令人失望和奇怪的!是否有一个原因?我们可以修复它吗?

我已经基于这种模型设计了我的整个工作流程来调用其他模型并从第三个模型提供数据等。

我喜欢让我的控制器尽可能的薄。这是否违反 CI 原则?

4

3 回答 3

2

在您的模型中尝试以下代码以访问user模型

$CI =& get_instance();
$CI->load->model('user');
// Call new model functions using handle to main CI object
echo $CI->user->id
于 2013-05-05T20:37:29.480 回答
1

从 CodeIgniter v2.XX 开始,可以完全支持从当前模型调用另一个模型。

首先,确保您拥有最新版本的 CodeIgniter(或至少 v2.01 及更高版本)。
然后,您需要做的就是像这样扩展 CodeIgniter 类:

$CI =& get_instance();  (Instead of $CI you can choose any other variable)

现在像你一直做的那样加载你的模型,但这一次,$this你将使用新的扩展变量,而不是使用只在你的控制器中直接工作的保存的单词$CI

$CI->load->model('user');

现在,您可以调用user模型中的任何函数,当然,查看您的id

echo $CI->user->id;

您还可以查看这篇文章以获取更多信息。

祝你好运!

于 2013-05-06T03:12:09.217 回答
-1

模型/user_model.php

class User_model extends CI_Model {

    public $id;

    public function __construct() {
        parent::__construct();
    }
}

模型/base_model.php

class Base_model extends CI_Model {

    public function __construct() {
        parent::__construct();

        $this->load->model('user_model');
        //load other models..

        //$this->user is available in your base model
        var_dump( $this->user_model->id );
    }
}

控制器/welcome.php

class Welcome extends CI_Controller {

    public function index() {

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

        //$this->user is available in your controller if you load base model
        var_dump( $this->user_model->id );
    }
}

关于你的最后一个问题,看看这个胖模型还是胖控制器?

于 2013-05-05T21:24:23.623 回答