当我尝试编写并运行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);
mews model
<?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();
}
}
答案 0 :(得分: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);
答案 1 :(得分:0)
如果不发布更多代码,看起来有两件事要检查。
首先,您必须在模型中调用父构造函数。所以你的News_model构造函数应该如下所示:
function __construct()
{
parent::__construct();
$this->load->database();
}
其次,如果您在上面发布的第21行的代码是正确的,则型号名称必须与您的类名匹配。所以第21行应该是:
$data['news'] = $this->News_model->get_news($slug);
注意大写&#39; N&#39;在News_model中。
这是yAnTar写的,但措辞不同。希望你能理解其中任何一个。
答案 2 :(得分:0)
这可能会对你有所帮助
1.In your controller:-
parent::__construct();
$this->load->model('News_model ');
$data['news'] = $this->news_model->get_news($slug);
2.In Model:-
class News_model extends CI_Model {
public function __construct()
{
$this->load->database();
}
public function get_news($slug)
{
if ($slug)
{
$query = $this ->db->get('news')
return $query->result_array();
}
$query = $this->db->get_where('news', array('slug' => $slug));
return $query->row_array();
}
}
答案 3 :(得分:0)
似乎没有加载模型。 您必须在使用之前加载模型 在控制器或自动加载阵列中 在使用
的控制器负载模型中$this->load->model('model_name');
在你的情况下
$this->load->model('news_model');