我是CodeIgniter的新手,目前在我的项目中,我有几个由几个控制器加载的模型,需要使用数据库。
我的问题是 - 我可以在整个项目的一个地方调用$this->load->database()
,还是应该在模型中的每个方法中执行此操作?
由于
答案 0 :(得分:1)
如果只有部分页面需要数据库连接,则可以通过添加此行代码手动连接到数据库
$this->load->database();
在任何需要它的函数中,或者在类构造函数中使数据库在该类中全局可用。
“自动连接”功能将为每个页面加载和实例化数据库类。只是 将“database”一词添加到库数组中,如以下文件中所示:
应用/配置/ autoload.php
http://ellislab.com/codeigniter/user-guide/database/connecting.html
答案 1 :(得分:1)
位于您所看到的autoload.php
中的/application/config/autoload.php
$autoload['libraries']
数组只需添加
$autoload['libraries'] = array('session', 'database','other_libraries');
如果你的项目范围涉及数据库交互,你应该使用autoload
,而在每个函数中包括你会很头疼
希望它有意义
答案 2 :(得分:1)
你有三个选择(我能想到)。
如果您在项目中几乎无处不在,请使用
/application/config/autoload.php
文件,您可以在其中找到
以下声明:
$autoload['libraries'] = array();
您可以更改为
$autoload['libraries'] = array('database');
这是最简单的方法,但它会增加开销,因为即使您不需要数据库类也会加载它。
如果您发现需要在特定模型中的每个方法中使用它,您可以在该特定模型的构造函数中调用 这将使数据库类可用于该模型中的每个方法。这是一个比第二个更有效的选择,而不像第三个那样乏味,可能使它成为最平衡的选择。$this->load->database();
,例如:< / p>
class Forums_model extends CI_Model{
function __construct()
{
// Call the parent constructor
parent::__construct();
$this->load->database();
}
function get_records()
{
$this->db->get('table');
//this now works in every method in this model
}
}
当然,您也可以选择使用$this->load->database();
在需要它的每个方法中加载它。这增加了最小的开销,理论上使其最有效。但是,这样做非常繁琐。
这三个都可以工作,无论您希望它是简单还是高效,您都可以选择。 (我的个人建议是选择2)
答案 3 :(得分:0)
我知道这不是所有方法中最好的,但是因为你是初学者...你只需在该方法中调用加载数据库$this->load->database()
,就在数据库相关查询开始的代码之上..假设{ {1}}与您在简单的PHP脚本(没有CI)中使用$this ->load->database();
此脚本完全相同。