簡體   English   中英

模型類中的CodeIgniter數據庫調用

[英]CodeIgniter Database call in Model-Class

我到處都在尋找這個問題! 但是沒有什么真正幫助解決這個問題的。

我總是收到以下錯誤:“致命錯誤:在非對象上調用成員函數query()”

我有以下控制器:

<?php
class Station extends CI_Controller {

    function __construct($params=array()) {
        parent::__construct();

        session_start();

        $this->load->library('parser');
        $this->load->helper(array('form', 'url'));
    }

    public function index() {
        $this->tpl_data['location'] = $this->stationmodel->getLocations()->all;
        $_SESSION['location'] = $this->tpl_data['location'];


        $this->load->view('station', $this->tpl_data);
    }
}

?>

以及以下模型:

<?php
class StationModel extends CI_Model {

    function __construct() {
        parent::__construct();
    }

    public function getLocations() {
        $query = $this->db->query("SELECT * FROM location WHERE City_IATA = 'MUC'");
        var_dump($query);

        // Just for test purposes!
        foreach($query->result() as $row) {
            echo $row->Location_Name_DE . '<br />';
        }
    }
}

?>

在我的autoload.php中,加載數據庫模塊:

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

另外,當我嘗試直接在控制器中加載數據庫模塊時,也會遇到相同的錯誤。

我的database.php:

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

$db['default']['hostname'] = 'localhost';
$db['default']['username'] = 'root';
$db['default']['password'] = '****';
$db['default']['database'] = 'comvel';
$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;

有人可以幫我嗎?

提前致謝!

在您的控制器中嘗試從function __construct($params=array())刪除$params=array() function __construct($params=array())

我還會從您的模型中刪除__construct() {} ,因為它沒有任何作用,並且可能會給您帶來麻煩。

這是一個奇怪的。 似乎您已正確完成所有操作。

您是否嘗試過完全刪除構造函數? 我的猜測是,構造函數以某種方式阻止了使用db對象初始化模型。 如果您需要運行一些初始化代碼,則使用鈎子 (例如pre_controller鈎子)可能更合適。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM