2016-10-18 3 views
0

Как я могу обработать ответ json-массива от контроллера api codeigniter rest? Могу ли я заставить контроллер получить функцию для чтения двух переменных (один для функции контроллера и один для номера страницы для функции разбиения на страницы на CI), как это?Codeigniter Rest API paginate json array output

public function index_get($kost_name, $page_num){ 
     $real_name = urldecode($kost_name); 
     $kost_list = $this->model->get_kost_name($real_name,$page_num); 
     //var_dump($kost_detail); 
     // echo "before ". (microtime(true) - $start); 

     // Check if the requested kost was found 
     if(!$kost_list){ 
      $response_data["code"] = API_V1_NO_DATA_STATUS_CODE; 
      $response_data["message"] = API_V1_NO_DATA_STATUS_MESSAGE; 
      $response_data["info"] = "Your requested kost was not found in our system."; 
      $this->response($response_data, 404); 
      return 0; // not really needed, but why not? 
     }else{ 
      $response_data["code"] = API_V1_SUCCESS_STATUS_CODE; 
      $response_data["message"] = API_V1_SUCCESS_STATUS_MESSAGE; 
      $response_data["info"] = "Requested kost was found in our system."; 
      foreach ($kost_list as $key => $kost) { 
       $response_data['kost_list'][$key]['kost_id'] = $kost['kost_id']; 
       $response_data['kost_list'][$key]['kost_name'] = $kost['kost_name']; 
       $response_data['kost_list'][$key]['area_name'] = $kost['area_name']; 
       $response_data['kost_list'][$key]['kost_address'] = $kost['kost_address']; 
       $response_data['kost_list'][$key]['kost_lat'] = $kost['kost_lat']; 
       $response_data['kost_list'][$key]['kost_long'] = $kost['kost_long']; 
       $response_data['kost_list'][$key]['kost_thumbnail'] = 
        KOST_IMAGE_DIR . $kost['kost_id'] . "/" . $kost['kost_thumbnail']; 
       $response_data['kost_list'][$key]['periods'] 
        ['daily'] = $kost['daily'] ? true:false ; 
       $response_data['kost_list'][$key]['periods'] 
        ['monthly'] = $kost['monthly'] ? true:false ; 
       $response_data['kost_list'][$key]['periods'] 
        ['trimonthly'] = $kost['trimonthly'] ? true:false ; 
       $response_data['kost_list'][$key]['periods'] 
        ['semester'] = $kost['semester'] ? true:false ; 
       $response_data['kost_list'][$key]['periods'] 
        ['annually'] = $kost['annually'] ? true:false ; 
      } 
     $this->response($response_data); 
     var_dump($response_data); 
    } 

и модель подобна этому?

function get_kost_name($kost_name, $page_num){ 
    $page_num2 = 1+(($page_num-1)*10); 
    $sql = "SELECT 
        k.KOST_ID kost_id, 
        k.KOST_NAME kost_name, 
        ar.AREA_NAME area_name, 
        k.KOST_ADDRESS kost_address, 
        k.LATITUDE kost_lat, 
        k.LONGITUDE kost_long,    
        (SELECT ki.IMAGE_URL 
         FROM 
          tb_r_kost_image ki 
         WHERE 
          ki.KOST_ID = k.KOST_ID 
         LIMIT 1 
        ) kost_thumbnail, 
        kr.HAS_DAILY daily, 
        kr.HAS_MONTHLY monthly, 
        kr.HAS_TRIMONTHLY trimonthly, 
        kr.HAS_SEMESTER semester, 
        kr.HAS_ANNUALLY annually 
      FROM 
        tb_r_kost k, 
        tb_m_area ar, 
        tb_r_kost_rates kr 
      WHERE 
        k.KOST_ID = kr.KOST_ID AND 
        k.AREA_ID = ar.AREA_ID AND 
        k.AVAILABLE = 1 AND 
        k.DELETE_FLAG = 0 AND 
        k.KOST_NAME LIKE '%$kost_name%' 
      LIMIT 
        $page_num2, 10"; 
    return fetchArray($sql, 'all'); 
} 

ответ

0

Вы не добавили ограничений по вашему sql-запросу, а также переменная ($ page_num) для функции модели не используется.

+0

Если я добавил ограничение на мой запрос sql, мне все еще нужен класс разбиения на страницы из Codeigniter? так как предел, уже выполняющий свою работу, ограничивает выход json-массива? –

+0

вы также не используете переменную $ page_num в pageniation lib. –

+0

отредактированный код вы можете проверить, что-то не так? теперь я удаляю класс pagination класса Codeigniter, вместо этого я просто использую синтаксис SQL Limit для своей модели –