2012-03-26 3 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() загрузчика позволяет передавать переменные в поле зрения.

Однако вы в значительной степени обошли цель разделения MVC. Вы хотите, чтобы контроллер «запрашивал» информацию из модели (не просто прямо из базы данных, в противном случае, какая точка модели?), А затем «передайте» ее в представление. Контроллер знает, что должно функционировать.

+0

но функция модели собственно ..returning с возвратным $ this-> db-> получить ('запросы'); – 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> 
Смежные вопросы