-1

我是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 ;?>
4

2 回答 2

0

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

模型

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();
  }

控制器

  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 ;?>

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

于 2013-01-19T05:05:26.563 回答
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第二个循环。

于 2013-01-19T05:07:18.260 回答