Codeigniter访问另一个模型中的DB对象

时间:2017-12-08 22:16:18

标签: codeigniter

在Codeigniter模型中有一种方法可以使它工作吗?

class Mdl_my_model extends CI_Model
{
protected $my_db = NULL;

public function __construct()
{
    parent::__construct();
    $this->my_db = $this->load->database('my_db', TRUE);
}

public function some_cool_method()
{
    $this->load->model('Mdl_other_model');
    $this->Mdl_other_model->other_method();
}
}

下面的模型可以使用$ my_db对象,还是必须再次加载db?

class Mdl_other_model extends CI_Model
{

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

public function other_method()
{
    //is it possible to use the $my_db object here?
}
}

1 个答案:

答案 0 :(得分:2)

您不必将数据库加载到类属性。您可以像模型$this->load->database('name')一样简单地加载它。加载它时,它应该可以访问下面的所有内容。但是我通常只是在MY_Controller的第一行__construct中加载它,我将所有单独的控制器扩展到该行。

如果您尝试将不同的数据库名称分配给单个属性(这是您正在进行分配的唯一原因),则必须使您的其他模型扩展第一个,然后您才能访问该属性。但这意味着无论何时加载其他模型,您都必须先加载第一个模型。通常我也会将它们分配到MY_Controller控制器中的公共属性,并且该变量将始终可用。