如何将数据从模型返回到控制器和控制器到codeigniter中的视图

时间:2012-03-26 19:47:52

标签: php codeigniter variables model

我正在使用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和其他数据从我的模型返回到控制器和控制器到我的视图。 请给我解决方案。          `

2 个答案:

答案 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>