2012-03-26 13 views
0

私はcodeigniterを使用しています。私は、ビューファイルに表示されるテーブルを持っています。だから私はテーブルからデータを取得するクエリを起動するモデルがあります。モデルからコントロールとコントロールにデータを返す方法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や他のデータを返すことができないと思っています。 私に解決策を教えてください。 `

答えて

0

変更この行:

<?php 
$this->load->view('my_active_req', array(
    'query' => $query 
)); 

view()ローダ機能の2番目のパラメータは、ビューに変数を渡すことができます。

しかし、MVC分離の目的を大部分は回避しています。コントローラがモデルから情報を「尋ねる」(データベースからまっすぐではなく、そうでなければモデルのポイントは何ですか?)、それをビューに「渡す」ようにします。コントローラーは、ビューが機能する必要があるものを認識します。

+0

しかし、戻ります$ this-> DB->ます( 'リクエスト' はモデル関数の適切..returningです); – user1110597

+0

おそらくそうではありません。通常は、 'CI_DB_Result'オブジェクトではなく配列や標準オブジェクトを返します。 '$ this-> db-> get( 'requests') - > result()'を試してください。 – landons

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> 
関連する問題