1

Code Igniterチュートリアルを作成して実行しようとすると、次のエラーがスローされます。

Call to undefined method News_model::get_news() in application\controllers\news.php on line 21 

これが21行目です。

$data['news'] = $this->news_model->get_news($slug);

ミューズモデル

<?php
class News_model extends CI_Model {
    public function __construct()
    {
        $this->load->database();
    }
    public function get_news($slug = FALSE)
    {
        if ($slug === FALSE)
        {
            $query = $this ->db->get('news')
            return $query->result_array();
        }

        $query = $this->db->get_where('news', array('slug' => $slug));
        return $query->row_array();
    }
    }
4

4 に答える 4

3

コントローラーでモデルを使用する場合 - このコードを記述する必要があります

$this->load->model('News_model');
$data['news'] = $this->News_model->get_news($slug);

そしてチェックライン

parent::__construct();

コントローラーの __construct メソッドで。(子がコンストラクターを定義している場合、子が親のコンストラクターを具体的にインスタンス化しない限り、PHP は親コンストラクターを自動的にインスタンス化しません)

アプリケーションの別の側からモデルを使用する場合は、このコードを記述する必要があります

$CI = &get_instance();
$CI->load->model('News_model');
$data['news'] = $CI->News_model->get_news($slug);
于 2012-12-23T10:44:15.460 に答える
0

さらにコードを投稿しないと、ここで確認することが 2 つあります。

まず、モデルで親コンストラクターを呼び出す必要があります。したがって、 News_model コンストラクターは次のようになります。

function __construct()
{
  parent::__construct();
  $this->load->database();
}

次に、上に投稿した 21 行目のコードが正しい場合、モデル名はクラス名と一致する必要があります。したがって、21行目は次のようになります。

$data['news'] = $this->News_model->get_news($slug);

News_model の大文字の「N」に注意してください。

これは yAnTar が書いたものですが、別の言い回しが必要です。うまくいけば、あなたはそれらのいずれかを理解するでしょう.

于 2012-12-24T04:44:13.893 に答える
0

モデルがロードされていないようです。使用する前にモデルをロードする必要があります コントローラまたはオートロード配列のいずれかで コントローラのロードモデルで

$this->load->model('model_name');

そしてあなたの場合

$this->load->model('news_model');
于 2018-04-08T16:51:56.017 に答える