1

我无法在我的模型或 autoload.php 中手动正确加载数据库库

$query = $this->db->get('videos'); 在指示未加载数据库库的非对象错误上生成对成员函数 get() 的调用。

我尝试使用下面模型的构造函数中注释掉的两行来加载数据库库,但都返回错误。如果我取消注释 $this->load->database 我在非对象错误上收到对成员函数database()的调用,

如果我取消注释 $this->load->library('database') 我会在非对象错误上收到对成员函数library()的调用

<?php 
class Videos_model extends CI_Model {
  public function __construct()
    {
        parent::__construct();
        //$this->load->database();
        //$this->load->library('database');
    }

    public function get_videos() 
    {
           $query = $this->db->get('videos');
    }

}

同一行$this->load->database(); 在控制器中不会产生错误但 get() 函数错误。

class Videos extends CI_Controller {

    public function __construct() {
            parent::__construct();
            $this->load->helper(array('url'));
            $this->load->database();
             //$this->load->library('database');
            $this->load->model('videos_model');
            $this->videos_model->get_videos();           
    }
}

我还在配置文件中设置了自动加载,

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

在我的 CI 日志文件中,指示数据库驱动程序已初始化 DEBUG - 2013-05-09 15:31:17 --> 数据库驱动程序类已初始化

这也是我的数据库配置,

$active_group = 'default';
$active_record = TRUE;

$db['default']['hostname'] = 'localhost';
$db['default']['username'] = 'dbusername';
$db['default']['password'] = 'dbpassword';
$db['default']['database'] = 'dbname';
$db['default']['dbdriver'] = 'mysql';
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = '';
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;

我在 Eclipse 中使用 CI 2.1.3 与 aptana studio 3 插件和 phpMyAdmin 3.5.8.1 和 Apache Server 2.2

更新:我已经确认从控制器而不是模型访问数据库是可行的。

4

1 回答 1

0

找到了答案。

我曾使用本教程在 Eclipse 中获得自动完成功能,http ://www.taggedzi.com/articles/display/autocomplete-eclipse-codeigniter-2 ,(链接 404'd)一旦我删除了 controller.php 中的额外代码并且模型中的model.php数据库访问被恢复。

这是关于如何在 Eclipse 中获得自动完成功能的更好的教程,http://www.web-and-development.com/codeigniter-and-eclipse-autocomplete/(阅读评论以了解如何使其在模型中工作以及控制器)。

于 2013-05-09T13:09:01.967 回答