0

我是 CodeIgniter 的新手,目前在我的项目中,我有几个模型,由几个控制器加载,它们需要与数据库一起使用。

我的问题是——我可以$this->load->database()只为整个项目调用一个地方,还是应该在我的模型中的每个方法中调用?

谢谢

4

4 回答 4

1

如果只有某些页面需要数据库连接,您可以通过添加这行代码手动连接到数据库

 $this->load->database(); 

在任何需要它的函数中,或在您的类构造函数中,以使数据库在该类中全局可用。

“自动连接”功能将在每个页面加载和实例化数据库类。只需将单词“数据库”添加到库数组中,如下面的文件所示:

应用程序/配置/autoload.php

http://ellislab.com/codeigniter/user-guide/database/connecting.html

于 2013-06-16T10:21:39.730 回答
1

你有三个选择(我能想到的)。

  1. 如果您在项目中几乎所有地方都需要它,请使用该 /application/config/autoload.php文件,您将在其中找到以下语句:

    $autoload['libraries'] = array();
    

    您可以更改为

    $autoload['libraries'] = array('database');
    

    这是最简单的方法,但它确实增加了开销,因为即使您不需要它也会加载数据库类。

  2. 如果您发现您需要在特定模型中的几乎每个方法使用它,您可以$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
       }
    }
    

    这将使数据库类可用于该模型中的每个方法。这是一个比第二个更有效的选择,并且不像第三个那样乏味,可能使其成为最平衡的选择。

  3. 当然,您也可以选择在需要它的每个方法中加载它,$this->load->database();这增加了最少的开销,理论上使其效率最高。但是,这样做非常乏味。

这三个都可以工作,您可以选择它是简单的还是高效的。(我个人的建议是选择2)

于 2013-06-16T10:45:13.657 回答
1

在您看到 数组autoload.php的位置中,只需添加/application/config/autoload.php$autoload['libraries']

$autoload['libraries'] = array('session', 'database','other_libraries');

如果您的项目范围涉及数据库交互,您应该使用autoloadwhile 包含在每个函数中,这会让您头疼希望它有意义

于 2013-06-16T10:30:59.103 回答
0

我知道这不是所有方法中最好的,但是由于您是初学者..您只需$this->load->database()在数据库相关查询开始的代码上方的该方法中调用加载数据库..假设$this ->load->database();对您来说与您完全相同在你的简单 php 脚本中使用include_once('connection.php')这个脚本(没有 CI)。

于 2013-06-16T12:29:40.520 回答