我是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
此代码有什么问题?
答案 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');
感谢您的回复。我希望。信息可以帮助其他人