2013-09-03 4 views
1

У меня есть контроллер с массивом $ added_tabs. Я передаю этот массив в функциональную модель. В моей модели, если я распечатываю результаты, все работает нормально, но если я снова верну $ row моему контроллеру, покажу только 1 запись.Передача нескольких массивов из модели в контроллер

Любые идеи?

В мой контроллер у меня есть это:

$this->load->model('check_info/check_post_day'); 
$admin_post_day = $this->check_post_day->check_post($added_tabs); 
echo "<pre>"; print_r($admin_post_day); echo "</pre>"; 

В моей модели у меня есть это:

class Check_post_day extends CI_Model { 

function check_post($data) { 
    foreach ($data as $info) { 
     $row = array(); 
      $query = $this->db->query(" 
      SELECT 

      admin_post_day.page_id, 
      admin_post_day.admin_id, 
      admin_post_day.hour_post, 
      admin_post_day.discount, 
      admin_post_day.url, 
      admin_post_day.message_post, 
      admin_post_day.voucher, 
      admin_post_day.date_saved, 

      fb_pages.page_id, 
      fb_pages.id_fb_pages, 

      fb_pages_admin.access_token 

      FROM admin_post_day 

      inner join fb_pages 
      on admin_post_day.page_id=fb_pages.page_id 

      inner join fb_pages_admin 
      on fb_pages.id_fb_pages=fb_pages_admin.id_fb_pages 

      where admin_post_day.page_id LIKE " . $info['page_id'] . " 
      ORDER BY admin_post_day.date_saved DESC LIMIT 1 
      "); 
    foreach ($query->result_array() as $row) { 
    $info = $row; 
    } 
     if (!empty($query)) { 
      return $row; 
     } else { 
      return false; 
     } 
    } 
} 
} 

// upate

class Check_post_day extends CI_Model { 

function check_post($data) { 
    foreach ($data as $info) { 
     $row = array(); 
      $query = $this->db->query(" 
      SELECT 

      admin_post_day.page_id, 
      admin_post_day.admin_id, 
      admin_post_day.hour_post, 
      admin_post_day.discount, 
      admin_post_day.url, 
      admin_post_day.message_post, 
      admin_post_day.voucher, 
      admin_post_day.date_saved, 

      fb_pages.page_id, 
      fb_pages.id_fb_pages, 

      fb_pages_admin.access_token 

      FROM admin_post_day 

      inner join fb_pages 
      on admin_post_day.page_id=fb_pages.page_id 

      inner join fb_pages_admin 
      on fb_pages.id_fb_pages=fb_pages_admin.id_fb_pages 

      where admin_post_day.page_id LIKE " . $info['page_id'] . " 
      ORDER BY admin_post_day.date_saved DESC LIMIT 1 
      "); 

    if($query->num_rows() > 0){ 
     $rows[] = $query->result_array(); 
    } 
} 
return $rows; 
} 
} 

ответ

4

Конечно, вы используете return в цикл, поэтому сразу после первого запуска - он возвращает результат.

Изменение:

if (!empty($query)) { 
    return $row; 
} else { 
    return false; 
} 

To:

if (!empty($query)) { 
    $rows[] = $row; 
} 

И после того, как цикл заканчивается:

if (count($rows) > 0) { 
    return $rows; 
} else { 
    return false; 
} 

UPDATE Пожалуйста, обратите внимание, что вы тратите ресурсы, используя которые второй цикл. На мой взгляд, это плохая практика.

foreach ($query->result_array() as $row) { 
    $info = $row; 
    } 

Рассмотрим добавление выхода функции result_array и обработать его вместо этого.

И в соответствии с комментарием @RocketHazmat «s,

пустой ($ запроса) не делает то, что вы думаете.

Вы должны изменить условие:

if(count($row) > 0) 

UPDATE 2 Вместо второго цикла и состояния:

if($query->num_rows() > 0){ 
    $rows[] = $query->result_array(); 
} 

пожалуйста обратите внимание, что если result_array возвращает массив $ строк будет многомерным массивом.

+0

Хорошо, как я могу отправить все массивы ???? потому что я пытался использовать возврат за пределы цикла и не работает в любом случае – subrui

+0

Пациент мой друг, нажал enter слишком рано :) Обновите меня, если он работает сейчас. –

+0

да! работает!! большое спасибо! : D – subrui

Смежные вопросы