Codeigniter在库中的负载模型

ede*_*iss 11 codeigniter

我正在使用codeigniter 2.1.3

我正在尝试从库中加载模型.最初我在库中的构造中的代码看起来像这样

$this->CI=& get_instance(); $this->CI->load->database('default')
Run Code Online (Sandbox Code Playgroud)

然后在我的一个库方法中

当我尝试下面的行它不起作用

$this->load->model('model_name')
Run Code Online (Sandbox Code Playgroud)

但是当我试着这个

$this->CI->load->model('model_name','',TRUE)
Run Code Online (Sandbox Code Playgroud)

它有效,任何人都可以解释CI的实例所指的内容以及加载模型时的2个额外参数?提前致谢.

Rep*_*pox 27

库不一定是CodeIgniter工作方式的一部分.

它可以是一个自制的库,用于解决您希望在CI应用程序中完成的任务.

这意味着如果要使用任何CI的帮助程序,模型或其他库,则需要通过CI实例执行此操作.这是通过这样做来实现的:

public function __construct()
{
    $this->CI =& get_instance();
}
Run Code Online (Sandbox Code Playgroud)

通过将实例分配给名为CI的库成员,可以加载所有与CI相关的帮助程序,模型和库$this->CI.通过尝试仅与$this您一起执行它只是指当前库 - 而不是CI实例.

要在您的库中正确加载模型,$this->CI->load->model('model_name');就足够了.第二个参数允许您通过不同的对象名称访问模型.加载模型不需要第三个参数,但允许您自动加载数据库驱动程序.

如果要通过同一成员访问模型:

$respone = $this->CI->model_name->method();
Run Code Online (Sandbox Code Playgroud)


Sum*_*pta 5

我有非常简单的代码,您应该使用它在库中加载模型

<?php
class Custom_lib
{
    private $_CI;
    public function __construct()
    {
        $this->_CI = & get_instance();
        $this->_CI->load->model('Dynamic_Model','dm');
    }


    function currentSession()
    {
        $session = $this->_CI->dm->fetchSingleData('id,session','session',array('is_active'=>1));
        return $session;
    }
}
Run Code Online (Sandbox Code Playgroud)

我希望这段代码能帮助你


Ven*_*hna 2

您可以通过第三个参数传递 TRUE(布尔值)来告诉模型加载函数自动连接,并且将使用数据库配置文件中定义的连接设置:

$this->load->model('Model_name', '', TRUE);
Run Code Online (Sandbox Code Playgroud)

您可以在以下链接的页面末尾了解更多相关信息。

http://ellislab.com/codeigniter/user-guide/general/models.html