我是 CodeIgniter 的新手,目前在我的项目中,我有几个模型,由几个控制器加载,它们需要与数据库一起使用。
我的问题是——我可以$this->load->database()
只为整个项目调用一个地方,还是应该在我的模型中的每个方法中调用?
谢谢
我是 CodeIgniter 的新手,目前在我的项目中,我有几个模型,由几个控制器加载,它们需要与数据库一起使用。
我的问题是——我可以$this->load->database()
只为整个项目调用一个地方,还是应该在我的模型中的每个方法中调用?
谢谢
如果只有某些页面需要数据库连接,您可以通过添加这行代码手动连接到数据库
$this->load->database();
在任何需要它的函数中,或在您的类构造函数中,以使数据库在该类中全局可用。
“自动连接”功能将在每个页面加载和实例化数据库类。只需将单词“数据库”添加到库数组中,如下面的文件所示:
应用程序/配置/autoload.php
http://ellislab.com/codeigniter/user-guide/database/connecting.html
你有三个选择(我能想到的)。
如果您在项目中几乎所有地方都需要它,请使用该
/application/config/autoload.php
文件,您将在其中找到以下语句:
$autoload['libraries'] = array();
您可以更改为
$autoload['libraries'] = array('database');
这是最简单的方法,但它确实增加了开销,因为即使您不需要它也会加载数据库类。
如果您发现您需要在特定模型中的几乎每个方法中使用它,您可以$this->load->database();
在该特定模型的构造函数中调用,例如:
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)
在您看到
数组autoload.php
的位置中,只需添加/application/config/autoload.php
$autoload['libraries']
$autoload['libraries'] = array('session', 'database','other_libraries');
如果您的项目范围涉及数据库交互,您应该使用autoload
while 包含在每个函数中,这会让您头疼希望它有意义
我知道这不是所有方法中最好的,但是由于您是初学者..您只需$this->load->database()
在数据库相关查询开始的代码上方的该方法中调用加载数据库..假设$this ->load->database();
对您来说与您完全相同在你的简单 php 脚本中使用include_once('connection.php')
这个脚本(没有 CI)。