CodeIgniter和自动加载数据库库

Dav*_*rth 2 codeigniter codeigniter-2

我有一个问题,使用CodeIgniter连接到数据库.

在模型中,如果我这样做

$this->load->database();
Run Code Online (Sandbox Code Playgroud)

然后查询如

$query = $this->db->get('articles', 10);
Run Code Online (Sandbox Code Playgroud)

工作并返回数据.但是,当我删除load-> database行并尝试使用自动加载数据库库时

$autoload['libraries'] = array('database');
Run Code Online (Sandbox Code Playgroud)

在application/config/autoload.php中,上面的查询失败.因为它在我显式加载库时起作用,所以我的数据库连接不是问题.我正在使用CodeIgniter 2.0.2(当前的最新版本).

由于我的大多数页面都使用数据库,我想自动加载它以避免在每个模型中逐个加载它.我是否误解了有关加载数据库库的文档或我做错了什么?

sha*_*que 7

我知道我可能只是在回答一个死的问题,但我遇到了同样的问题.

如果您正在使用eclipse pdt或类似的IDE并通过在构造函数之前添加一些变量来修改系统> core> model.php以获得代码完成,那么自动加载不起作用

我不知道为什么,但事实是它不起作用.我将核心> model.php恢复为原始版本,自动加载工作正常.我现在不接受自动加载,对于CI的新编码器来说,这真的是一个糟糕的经历.

如果您有解决方法,请评论.


sha*_*eck 5

如果您仍然无法解决问题,这只是一个替代方案。只需扩展 CI_Model 并在构造函数中自动加载数据库即可。然后你可以让所有其他模型继承该基类。

例子:

<?php 
    class My_Model extends CI_Model{
        public function __construct(){
            parent::__construct();
             $this->load->database();
         }
     }
Run Code Online (Sandbox Code Playgroud)

所有其他人都会像这样开始:

  <?php
       class Some_Model extends MY_Model{}
Run Code Online (Sandbox Code Playgroud)

此方法还有另一个好处,即您不必在创建的每个模型中都包含加载代码行。您还可以轻松地将模型之间的共享功能推送到父 MY_Model 类中。

希望能帮助到你!