2013-05-09 31 views
1

我无法在我的模型或autoload.phpCodeIgniter无法手动加载数据库库或自动加载;调用成员函数得到()非对象

线$查询= $这个 - > DB->获取正确手动加载数据库库中( '视频');产生一个调用成员函数get()上的一个非对象错误表示数据库库没有加载。

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

如果我取消$这个 - >负载>库(“数据库” )我得到一个调用成员函数库()在非对象错误

<?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'); 
    } 

} 

同一线路$这个 - >负载>数据库();控制器中的不会产生错误,而是get()函数错误。在我的CI日志文件的数据库驱动程序

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'); 

指示进行初始化 DEBUG - 2013年5月9日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; 

我在日食中使用CI 2.1.3与aptana studio 3插件和phpMyAdmin 3.5.8.1和Apache服务器2.2

更新: 我已经确认访问数据库的工作原理来自控制器,但不是模型。

+0

我看不出你的数据库配置有什么问题。我能看到的唯一的事情就是你在你的控制器中用小写字母表示你的模型。 CI文档指出模型类应以大写字母开头,并且也应该以这种方式引用它们。 ($ this-> load-> model('Videos_model')/ $ this-> Videos_model-> get_videos();)。这是否会有所作为,我不知道。 – 2013-05-09 05:27:22

+0

@ MichaelO'Brien它似乎正在使用小写字母,但我改变它更符合惯例。 – jalbasri 2013-05-09 13:07:32

回答

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/(阅读注释以了解如何使它在模型和控制器中工作)。

+0

第一个链接是404,我会尝试第二个链接。 – Ibanez1408 2016-08-09 04:45:11

相关问题