我正在使用codeigniter。我有一个表在视图文件中显示。所以我有一个模型,我发起一个查询来从表中获取数据。
function my_active_requests()
{
$user_id = $this->session->userdata('user_id');
$this->db->select('id,request_date,required_by_date');
$this->db->where('requested_by',$user_id);
return $this->db->get('requests');
///also tried with
//$query = $this->db->get('requests');
///$number_of_rows = $query->num_rows;
//return $query;
//return $number_of_rows;
//but no result
}
这是模型功能。
这是我的控制器
function my_active_req()
{
$this->bloodline_model->my_active_requests();
//also tried without this//
$query = $this->db->get('requests');
//and this//
$number_of_rows = $query->num_rows;
$this->load->view('my_active_req');
}
这是我的观点
<?php foreach ($query->result() as $row) { ?>
<tr>
<td><?php echo $row->id; ?></td>
<td><?php echo $row->request_date; ?></td>
<td><?php echo $row->required_by_date; } ?></td>
</tr>
</table>
但错误是未定义的变量$ query。 我想,我无法将$ query和其他数据从我的模型返回到控制器和控制器到我的视图。 请给我解决方案。 `
答案 0 :(得分:0)
更改此行:
<?php
$this->load->view('my_active_req', array(
'query' => $query
));
view()
加载器函数的第二个参数允许您将变量传递到视图中。
但是,你在很大程度上绕过了MVC分离的目的。您希望控制器“询问”模型中的信息(不仅仅是直接来自数据库;否则,模型的重点是什么?),然后将其“传递”到视图中。控制器知道视图需要运行什么。
答案 1 :(得分:0)
模型
function my_active_requests()
{
$user_id = $this->session->userdata('user_id');
$this->db->select('id,request_date,required_by_date');
$this->db->where('requested_by',$user_id);
$query = $this->db->get('requests');
if($query->num_rows) {
return $this->db->result();
}
return false;
}
控制器
function my_active_req()
{
$results = $this->bloodline_model->my_active_requests();
$this->load->view('my_active_req', array('user_data' => $results));
}
查看
<?php
if($user_data) {
foreach ($user_data as $row) { ?>
<tr>
<td><?php echo $row->id; ?></td>
<td><?php echo $row->request_date; ?></td>
<td><?php echo $row->required_by_date; } ?></td>
</tr>
</table>