codeigniter site_model严重性:注意错误此行有什么问题?

时间:2012-07-30 21:11:32

标签: php codeigniter

我是codeigniter的新手,并试图在codeigniter中学习crud .. 我的站点控制器是:

class Site extends CI_Controller 
{
    function index()
    {
        $data = array();
        if($query = $this->site_model->get_records())
        {
            $data['records'] = $query;
        }   
        $this->load->view('options_view', $data);
    }

我的site_model是:

class Site_model extends CI_Model {
    function __construct(){
      parent::__construct();
    }


    function get_records()
    {
        $query = $this->db->get('data');
        return $query->result();
    }

    function add_record($data) 
    {
        $this->db->insert('data', $data);
        return;
    }

    function update_record($data) 
    {
        $this->db->where('id', 12);
        $this->db->update('data', $data);
    }

    function delete_row()
    {
        $this->db->where('id', $this->uri->segment(3));
        $this->db->delete('data');
    }

}

我制作了$ autoload ['libraries'] = array('database'); 当我尝试检查网站时,我收到错误:

Severity: Notice

Message: Undefined property: Site::$site_model

Filename: controllers/site.php

Line Number: 9

此代码有什么问题?

3 个答案:

答案 0 :(得分:1)

您需要加载site_model才能访问它。您可以像这样手动加载它:

function index()
{
    // Load the model...
    $this->load->model('site_model');

    $data = array();
    if($query = $this->site_model->get_records())
    {
        $data['records'] = $query;
    }   
    $this->load->view('options_view', $data);
}

如果您在类中使用多个方法中的模型,则应该在类的构造函数中加载模型:

function __construct(){
    parent::__construct();
    // Load the model...
    $this->load->model('site_model');
}

或者,如果您在整个应用程序中需要它,可以autoload模型(通过config/autoload.php):

/*
| -------------------------------------------------------------------
|  Auto-load Models
| -------------------------------------------------------------------
| Prototype:
|
|   $autoload['model'] = array('model1', 'model2');
|
*/

$autoload['model'] = array('site_model');

答案 1 :(得分:1)

加载模型:

class Site extends CI_Controller 
{
    //you also need the constructor
    function __construct(){
        parent::__construct();
        $this->load->model('Site_model');
    }
    function index()
    {
        $data = array();
        //now you can use it
        if($query = $this->site_model->get_records())
        {
            $data['records'] = $query;
        }   
        $this->load->view('options_view', $data);
    }

答案 2 :(得分:0)

我用两种方式解决了这个问题。 Colin和Radashk方法都有效。如果我使用Radashk方法,就可以在顶部编写函数了。如果我使用Colin的方法,我必须对每个delete和create方法使用$this->load->model('site_model');

其他选项是$autoload['model'] = array('site_model');

感谢您的回复。我希望。信息可以帮助其他人