0

私はcodeigniterの初心者で、codeigniterでクラッドを学ぼうとしています。私のサイトコントローラーは次のとおりです。

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

このコードの何が問題になっていますか?

4

3 に答える 3

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

または、アプリケーション全体でモデルが必要になる場合は、( 経由で) モデルを自動ロードconfig/autoload.phpできます。

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

$autoload['model'] = array('site_model');
于 2012-07-30T21:16:46.093 に答える
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);
    }
于 2012-07-30T21:16:57.153 に答える
0

これを2つの方法で解決しました。Colin と Radashk の両方の方法が機能します。Radashk メソッドを使用する場合は、上に関数を記述すれば十分です。Colin のメソッドを使用する場合 $this->load->model('site_model');、delete メソッドと create メソッドのそれぞれに使用する必要があります。

他のオプションは$autoload['model'] = array('site_model');

返信ありがとうございます。私は願います。情報は他の誰かを助けるかもしれません

于 2012-07-30T21:27:01.840 に答える