如何在codeigniter中传递两个结果相同的视图

时间:2013-01-19 04:48:43

标签: php codeigniter

我是codeigniter的新手。我写过控制器,model.view。

我想在模型中执行另一个查询,该查询在where条件中具有来自第一个模型查询的“ID”,并在同一视图中传递两个查询的单独结果。

我在模型和视图中解释了它。 我怎么能这样做。需要一些语法我该怎么做呢。 或者这是正确的方式还是做某事?

控制器

class demo extends CI_Controller
{
    function getRecords()
    {
        $offset = trim($this->input->get('off'));
        $this->load->model('demo_model');
        $data = $this->demo_model->get_messages($offset);
        $return = $this->load->view('demo_view',array('records'=>$data),true);
        die($return);
    }   
}

模型

class demo_model extends CI_Model
{
    function get_messages($offset = 0)
    {
        $q = $this->db->query(" select Id,cloum2 from table");

        //  want to use ID from above query in to second query

        //  Like sql="select * from table where id='$id'" ; 

        //  and how i pass the separate result for both query inthe view

    return $q->result_array();
     }

}

查看 demo_view;

<?php foreach($records as $row) :?>
 <div> do something with $row </div>

 <div> //want use second query foreach here  </div>
<?php endforeach ;?>

2 个答案:

答案 0 :(得分:0)

两个查询都将返回PHP数组,因此您可以执行类似的操作。

MODEL

function get_messages($offset = 0)
{
    $q = $this->db->query(" select Id,cloum2 from table");
   return $q->result_array();
 }

 function get_id($id){
    $q = $this->db->query("select * from table where id='$id'");
   return $q->result_array();
  }

CONTROLLER

  class demo extends CI_Controller{
      function getRecords(){
            $offset = trim($this->input->get('off'));
           $this->load->model('demo_model');
           $data = $this->demo_model->get_messages($offset);
           for($c=0;$c<count($data);$c++){
              $data[$c]['innerRow']=$this->demo_model->get_id($data[$c]['id']);
           }
           $return = $this->load->view('demo_view',array('records'=>$data),true);
           die($return);
     }

查看

     <?php foreach($records as $row) :?>
          <div> do something with $row </div>
         <div>  
             <?php foreach($row['innerRow'] as $innerrow) :?>
              ......
             <?php endforeach ;?>
         </div>

     <?php endforeach ;?>

(但这不是一个好主意,因为你会对模型运行一堆查询。最好考虑一个更好的查询)

答案 1 :(得分:0)

function getRecords()
    {
        $offset = trim($this->input->get('off'));
        $this->load->model('demo_model');
        $data = $this->demo_model->get_messages($offset);

        $secresult=array();
        foreach($data as $msg)
        {
          $res = $this->demo_model->get_result($msg['id']); // pass id to query 
          $secresult[]=$res;
        }

        $return = $this->load->view('demo_view',array('records'=>$data,     'theresult'=>$secresult),true);
        die($return);
    }  

在您的视图文件中,您可以使用theresult进行第二次循环。