CodeIgniter - 我应该在何时何地调用$ this-> load-> database()

时间:2013-06-16 10:12:41

标签: php codeigniter

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

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

由于

4 个答案:

答案 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)

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

  1. 如果您在项目中几乎无处不在,请使用 /application/config/autoload.php文件,您可以在其中找到 以下声明:

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

    您可以更改为

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

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

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

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

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

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

答案 3 :(得分:0)

我知道这不是所有方法中最好的,但是因为你是初学者...你只需在该方法中调用加载数据库$this->load->database(),就在数据库相关查询开始的代码之上..假设{ {1}}与您在简单的PHP脚本(没有CI)中使用$this ->load->database();此脚本完全相同。