【问题标题】:Codeigniter Rest API paginate json array outputCodeigniter Rest API 分页 json 数组输出
【发布时间】:2016-10-18 22:39:51
【问题描述】:

如何对来自 codeigniter rest api 控制器的 json 数组响应进行分页?我可以让控制器获取函数来读取两个变量(一个用于控制器功能,一个用于 CI 上的分页功能的页码)吗?

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

【问题讨论】:

    标签: php json codeigniter rest pagination


    【解决方案1】:

    您没有对您的 sql 查询添加任何限制,并且模型函数的变量 ($page_num) 未使用。

    【讨论】:

    • 如果我对我的 sql 查询添加了限制,我还需要 Codeigniter 的分页类吗?因为限制已经在限制 json 数组输出?
    • 您也没有在分页库中使用 $page_num 变量。
    • 代码已编辑,您可以检查是否有问题吗?现在我正在删除调用 Codeigniter 的分页类,而是在我的模型上使用 SQL 限制语法
    • 你为什么要使用分页库来实现这个,最好的做法是在具有限制和偏移值的模型中做到这一点。
    • 因为我认为使用分页库更好(?),由于sql限制和偏移,我无法决定使用哪一个,并且分页库用于分页
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-17
    • 1970-01-01
    • 2017-01-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多