14

我正在使用 codeigniter 2.1.3

我正在尝试从库中加载模型。最初我在库中的构造中的代码如下所示

$this->CI=& get_instance(); $this->CI->load->database('default')

然后在我的一个库方法中

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

$this->load->model('model_name')

但是当我尝试这个时

$this->CI->load->model('model_name','',TRUE)

它有效,任何人都可以在加载模型时解释 CI 的实例指的是什么以及 2 个额外的参数?提前致谢。

4

3 回答 3

32

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

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

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

public function __construct()
{
    $this->CI =& get_instance();
}

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

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

如果你想通过同一个成员访问你的模型:

$respone = $this->CI->model_name->method();
于 2013-02-07T19:01:52.953 回答
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;
    }
}

我希望这段代码对你有帮助

于 2019-07-27T16:40:12.623 回答
2

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

$this->load->model('Model_name', '', TRUE);

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

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

于 2013-02-07T18:56:39.440 回答