我正在使用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个额外参数?提前谢谢。
答案 0 :(得分:27)
库不一定是CodeIgniter工作方式的一部分。
它可以是一个自制的库,用于解决您希望在CI应用程序中完成的任务。
这意味着如果您想使用任何CI的帮助程序,模型或其他库,则需要通过CI实例执行此操作。这是通过这样做来实现的:
public function __construct()
{
$this->CI =& get_instance();
}
通过将实例分配给名为CI的库成员,可以通过$this->CI
加载所有与CI相关的帮助程序,模型和库。通过尝试仅使用$this
进行操作,您只是指当前库 - 而不是CI实例。
要正确加载模型,在库中$this->CI->load->model('model_name');
就足够了。第二个参数允许您通过不同的对象名称访问模型。加载模型不需要第三个参数,但允许您自动加载数据库驱动程序。
如果您想通过同一会员访问您的模型:
$respone = $this->CI->model_name->method();
答案 1 :(得分:2)
您可以通过第三个参数传递TRUE(布尔值)来告诉模型加载函数自动连接,并且将使用数据库配置文件中定义的连接设置:
$this->load->model('Model_name', '', TRUE);
您可以在以下链接的页面末尾了解更多信息。
http://ellislab.com/codeigniter/user-guide/general/models.html
答案 2 :(得分:0)
我有非常简单的代码,您应该使用它们将模型加载到库中
<?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;
}
}
我希望这段代码对您有帮助