0

$q1 と $q2 の 2 つのクエリがあります。query1 から複数のレコードを取得し、各レコードには ID があり、この ID を where 条件の 2 番目のクエリに使用したいと考えています。

私はコントローラーでこれをやっています。私は次のコードを試しました。foreach で、id を保存して $q2 where 条件に渡そうとしています。

//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>
4

2 に答える 2

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

また

array_mergeを使用できます

お気に入り

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

次に、myviewで、変数$resultq1と$resultq2の両方の結果を取得します。

$ data ['variable_name']を使用して、コントローラーからビューファイルに任意の数の変数を渡すことができ、単純な変数$variable_nameのようにビューファイルで取得できます。

役立つかもしれないいくつかのサンプルリンク: -2種類の配列変数をcodeigniterビューファイルに渡す

于 2013-02-28T11:26:18.453 に答える
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);
于 2013-02-28T11:29:43.227 に答える