传递两个查询结果以在codeigniter中查看

时间:2013-02-28 10:59:53

标签: codeigniter

我有两个查询$ q1和$ q2。 从query1我得到多条记录,每条记录都有id,我想在where条件下使用这个id进行第二次查询。

我在控制器中这样做。 我试过以下代码。 在foreach中我试图存储id并传递给$ q2 where condition。

//Query 1
    $q1 = $this->db->select(array(
                                 'spf.id as id' ,
                                  'spf.name',
                                'spf.added_on'
                                ))->from('sp_form spf')->where($where)->order_by('spf.id desc')->limit(10, $page * 10)->get();
                   $data['data'] = $q1->result_array();

                foreach($data as $rec)
                {
                   $id = $rec['id']; // here how i catch id for each row

                 //Query 2

                    $q2 = $this->db->select("count('id') as count ")->from('sp_topic spft')->where('spft.formid',$id)->get();
                      $data['count'] =  $q1->row_object();
                }
                // pass combine result to view

                 $this->load->view('myview', $data,true);

编辑:

This is my view.

I have try Nishant answer and i get resultq1 using foreach but how can i get result of resultq2.


    <table width="100%">
      <tr>
        <td class="th"> Details</td>
        <td width="5%" class="th"> Answer</td>
        <td width="15%" class="th">Started by</td>
        <td  width="15%" class="th">Created on</td>
      </tr>
      <?php foreach($resultq1 as $row):?>
       <tr>
        <td><?php echo $row['name'] ;?></td>

         <td >---- </td> // here i want to use resultq2

         <td><?php echo $row['added_by'] ;?></td>
        <td ><?php echo $row['added_on'];?></td>
      </tr>
      <?php endforeach;?>
    </table>

2 个答案:

答案 0 :(得分:0)

你可以这样做。

$resultq1= $q1->result_array();
$data['resultq1'] = $resultq1;

$resultq2 = array();$i=0;
foreach($resultq1 as $row){
   $id = $row['id'];
   $q2 = $this->db->select("count('id') as count ")->from('sp_topic spft')>where('spft.formid',$id)->get();
   $resultq2[$i]['count'] =  $q1->row_object();
   $i++; 
}
$data['resultq2'] = $resultq2;
$this->load->view('myview', $data,true);

OR

您可以使用array_merge

$data = array_merge($resultq1, $resultq2);

然后在myview中,你将得到变量$ resultq1和$ resultq2的结果。

您可以通过$ data ['variable_name']将任意数量的变量从控制器传递到视图文件,并且可以在视图文件中检索它,如简单变量$ variable_name。

一些可能有用的示例链接: - Passing 2 types of array variables in codeigniter view files

答案 1 :(得分:0)

$data['count'] =  $q1->row_object();

更改如下:

foreach($data as $rec)
       {
          $id = $rec['id']; // here how i catch id for each row
          $q2 = $this->db->select("count('id') as count ")->
          from('sp_topic spft')->where('spft.formid',$id)->get();
          $data[$id]['count'] =  $q2->result_array();
       }

$this->load->view('myview', $data,true);