2012-03-26 1 views
0

zurückbringt, verwende ich codeigniter. Ich habe eine Tabelle, die in einer Ansichtsdatei angezeigt werden soll. Also habe ich ein Modell, wo ich eine Abfrage auslösen, um die Daten aus der Tabelle zu bekommen.Wie man Daten vom Modell zum controler und controler zu den Ansichten im 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 
    } 

Dies ist die Modellfunktion.

das ist mein Controller

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

und das ist meiner Meinung nach

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

aber der Fehler ist nicht definierte Variable $ query. ich denke, ich bin nicht in der Lage, die $ query und andere Daten von meinem Modell zu Controller und Controller zu meiner Ansicht zurückzukehren. Bitte stellen Sie mir die Lösung zur Verfügung. `

Antwort

0

Ändern Sie diese Zeile:

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

Der zweite Parameter der view() Loader-Funktion können Sie Variablen in die Ansicht zu übergeben.

Sie umgehen jedoch weitgehend den Zweck der MVC-Trennung. Sie möchten, dass der Controller nach Informationen aus dem Modell "fragt" (nicht nur direkt aus der Datenbank; sonst, was ist der Sinn eines Modells?), Und dann "übergeben" Sie es an die Ansicht. Der Controller weiß, wie die Ansicht funktionieren muss.

+0

aber ist die Modellfunktion richtige ..returning mit return $ this-> db-> get ('Anfragen'); – user1110597

+0

Wahrscheinlich nicht. Sie würden normalerweise ein Array oder ein Standardobjekt anstelle eines CI_DB_Result-Objekts zurückgeben. Versuchen Sie '$ this-> db-> get ('Anfragen') -> result()' – landons

0

Modell

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

-Controller

function my_active_req() 
{ 

    $results = $this->bloodline_model->my_active_requests(); 
    $this->load->view('my_active_req', array('user_data' => $results)); 
}  

Ansicht

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