Php 如何正确调用codeigniter中的模型?
加载模型时,我收到了此Php 如何正确调用codeigniter中的模型?,php,codeigniter,models,Php,Codeigniter,Models,加载模型时,我收到了此通知 A PHP Error was encountered Severity: Notice Message: Undefined property: Users::$select Filename: controllers/users.php Line Number: 11 这是我的控制器(users.php) 这是我的模型(users\u Model.php) 这是我的视图(users
通知
A PHP Error was encountered
Severity: Notice
Message: Undefined property: Users::$select
Filename: controllers/users.php
Line Number: 11
这是我的控制器(users.php)
这是我的模型(users\u Model.php)
这是我的视图(users\u View.php)
身份证件
名字
姓
电子邮件ID
密码
性别
电话
地址
是管理员吗
我是CodeIgniter的新手,需要一些帮助来了解我的代码哪里出了问题 将控制器更改为
<?php
class Users extends CI_Controller{
public function index() {
//load the database
$this->load->database();
//load the model
$this->load->model('users_model');
//load the method of model
$data['h']=$this->users_model->select_data();
//return the data in view
$this->load->view('users_view', $data);
}
}
?>
你的模型
<?php
class Users_model extends CI_Model
{
function __construct()
{
// Call the Model constructor
parent::__construct();
}
//we will use the select function
public function select_data()
{
//data is retrive from this query
$query = $this->db->get('users');
return $query;
}
}
?>
你的观点
<table border="1">
<tbody>
<tr>
<td>Id</td>
<td>First Name</td>
<td>Last Name</td>
<td>E-mail ID</td>
<td>Password</td>
<td>Gender</td>
<td>Phone</td>
<td>Address</td>
<td>Is Admin</td>
</tr>
<?php
foreach ($h->result() as $row)
{
?><tr>
<td><?php echo $row->id;?></td>
<td><?php echo $row->fname;?></td>
<td><?php echo $row->lname;?></td>
<td><?php echo $row->email;?></td>
<td><?php echo $row->password;?></td>
<td><?php echo $row->gender;?></td>
<td><?php echo $row->phone;?></td>
<td><?php echo $row->address;?></td>
<td><?php echo $row->admin;?></td>
</tr>
<?php } ?>
</tbody>
身份证件
名字
姓
电子邮件ID
密码
性别
电话
地址
是管理员吗
将控制器更改为
<?php
class Users extends CI_Controller{
public function index() {
//load the database
$this->load->database();
//load the model
$this->load->model('users_model');
//load the method of model
$data['h']=$this->users_model->select_data();
//return the data in view
$this->load->view('users_view', $data);
}
}
?>
你的模型
<?php
class Users_model extends CI_Model
{
function __construct()
{
// Call the Model constructor
parent::__construct();
}
//we will use the select function
public function select_data()
{
//data is retrive from this query
$query = $this->db->get('users');
return $query;
}
}
?>
你的观点
<table border="1">
<tbody>
<tr>
<td>Id</td>
<td>First Name</td>
<td>Last Name</td>
<td>E-mail ID</td>
<td>Password</td>
<td>Gender</td>
<td>Phone</td>
<td>Address</td>
<td>Is Admin</td>
</tr>
<?php
foreach ($h->result() as $row)
{
?><tr>
<td><?php echo $row->id;?></td>
<td><?php echo $row->fname;?></td>
<td><?php echo $row->lname;?></td>
<td><?php echo $row->email;?></td>
<td><?php echo $row->password;?></td>
<td><?php echo $row->gender;?></td>
<td><?php echo $row->phone;?></td>
<td><?php echo $row->address;?></td>
<td><?php echo $row->admin;?></td>
</tr>
<?php } ?>
</tbody>
身份证件
名字
姓
电子邮件ID
密码
性别
电话
地址
是管理员吗
您对模型方法的调用是错误的。
您应该使用希望在控制器中使用的方法调用模型
,如下所示:
$this->load->model('users_model');
$data['h']=$this->users_model->select();
编辑:加载模型时,可以发送第二个参数作为模型的重命名。例如:
$this->load->model('users_model', 'select');
$data['h']=$this->select->select();
有关加载模型的详细信息,请检查您对模型方法的调用是错误的。
您应该使用希望在控制器中使用的方法调用模型
,如下所示:
$this->load->model('users_model');
$data['h']=$this->users_model->select();
编辑:加载模型时,可以发送第二个参数作为模型的重命名。例如:
$this->load->model('users_model', 'select');
$data['h']=$this->select->select();
您应该检查以了解有关加载模型的更多信息不要在控制器中加载数据库,而要在模型中加载数据库。按照MVC的方式,体系结构模型是数据层,所以查询和数据库工作应该局限于模型 视图是应用程序的表示层,主要是“用户所看到的” 控制器是应用程序的逻辑部分,它可以更好地关联视图和模型。所以,所有逻辑工作,如从数据库到表示层加载视图、模型、数据验证、数据处理,以及反之亦然,都应该留在控制器中。
当谈到正确的加载模型时,上面的答案非常好,但也有一些技巧可以让您感兴趣
<?php
Class Users extends CI_Controller {
public function __CONSTRUCT () {
parent::__CONSTRUCT();
$this->load->model('user_model');
}
public function index(){
//load the method of model
$data['h']=$this->user_model->select();
//return the data in view
$this->load->view('users_view', $data);
}
}
?>
以及内部的负载模型。这允许您在整个类上使用模型,而不是在每个函数中加载模型 此外,如果您想要创建多个模型,您可以在阵列中执行此操作
public function __CONSTRUCT() {
parent::__CONSTRUCT();
$this->load->model( array('user_model', 'model_2', 'model_3'));
}
不要在控制器中加载数据库,而是在模型中加载。按照MVC的方式,体系结构模型是数据层,所以查询和数据库工作应该局限于模型 视图是应用程序的表示层,主要是“用户所看到的” 控制器是应用程序的逻辑部分,它可以更好地关联视图和模型。所以,所有逻辑工作,如从数据库到表示层加载视图、模型、数据验证、数据处理,以及反之亦然,都应该留在控制器中。
当谈到正确的加载模型时,上面的答案非常好,但也有一些技巧可以让您感兴趣
<?php
Class Users extends CI_Controller {
public function __CONSTRUCT () {
parent::__CONSTRUCT();
$this->load->model('user_model');
}
public function index(){
//load the method of model
$data['h']=$this->user_model->select();
//return the data in view
$this->load->view('users_view', $data);
}
}
?>
以及内部的负载模型。这允许您在整个类上使用模型,而不是在每个函数中加载模型 此外,如果您想要创建多个模型,您可以在阵列中执行此操作
public function __CONSTRUCT() {
parent::__CONSTRUCT();
$this->load->model( array('user_model', 'model_2', 'model_3'));
}
更改$data['h']=$this->select->select()
到$data['h']=$this->users\u model->select()代码>@Blinkydamo它起作用了。非常感谢。更改$data['h']=$this->select->select()
到$data['h']=$this->users\u model->select()代码>@Blinkydamo它起作用了。非常感谢。你应该解释一下,而不仅仅是粘贴代码。没关系@GerardCuadras。他给出了正确的答案,也感谢你的建议,我在回答问题时会记住这一点。你应该解释一些事情,而不仅仅是粘贴代码。没关系@GerardCuadras。他给出了正确的答案,也谢谢你的建议,我在回答问题时会记住这一点。好的,我理解。再次谢谢你,好的,我明白了。再次感谢你。谢谢你的指导。我会尝试所有的。谢谢你的指导。我会尝试所有的。