2014-02-12 54 views
0

我正在使用CakePHP進行培訓。目前我有一個問題。 我不知道如何使用json數據進行分頁。 我的應用程序將調用API並接收JSON數據。 格式看起來像CakePHP - 如何使用json數據進行分頁?

{"success":1,"films":[{"film_id":"384","title":"GROSSE WONDERFUL","description":"A Epic Drama of a Cat And a Explorer who must Redeem a Moose in Australia","release_year":"2006","language_id":"1","original_language_id":null,"rental_duration":"5","rental_rate":"4.99","length":"49","replacement_cost":"19.99","rating":"R","special_features":"Behind the Scenes","last_update":"2006-02-15 05:03:42"},{"film_id":"984","title":"WONDERFUL DROP","description":"A Boring Panorama of a Woman And a Madman who must Overcome a Butler in A U-Boat","release_year":"2006","language_id":"1","original_language_id":null,"rental_duration":"3","rental_rate":"2.99","length":"126","replacement_cost":"20.99","rating":"NC-17","special_features":"Commentaries","last_update":"2006-02-15 05:03:42"}]} 

這是PHP代碼

$data = array('filmId' => $search_data['filmId'], 'filmTitle' => $search_data['filmTitle'], 'releaseYear' => $search_data['releaseYear'], 'rating' => $search_data['rating']); 
$HttpSocket = new HttpSocket(); 
$records = $HttpSocket->post($apiFilmsByConditions, $data); 
$records = json_decode($records, true); 

我嘗試使用CakePHP的PAGINATE但似乎這會從數據庫中獲取數據,而不是從API。

這是API鏈接http://oxuhandmade.com/api/get_all_films.php

你能幫助我在這種情況下?

+0

你不分頁數組。如果你正在使用的API沒有分頁或一些等價物,你想要將數組分成塊,並將每個塊視爲一個頁面。 **實現緩存**。 – AD7six

+0

不幸的是,api沒有分頁。你想告訴我關於實現緩存的更多細節嗎? (對不起,因爲我在CakePHP中很新)。 –

+0

P.S:這是API鏈接http://oxuhandmade.com/api/get_all_films.php –

回答

0

不是API查詢數據庫嗎?一個API是一個「應用程序編程接口」,這意味着它允許您從「外部」操作數據庫,基於簡單的接口,由一些請求觸發。所以沒有意圖通過API限制結果,但通過數據庫而不是

要限制API返回的結果,需要將參數與請求一起傳遞,在後端處理它,使用所需的限制查詢數據庫,並將結果返回給發出請求的任何人。或者,如果它不需要動態化,只需對API所需的限制進行硬編碼即可。

來自CakePHP的Paginator使這項工作變得簡單很多,您只需爲它提供一些條件和參數以便對結果進行分頁,並且它爲您提供了魔力。

+1

似乎不太可能開發者使用任何API都是api的開發者。 api只是另一個數據源;繞過api(即使可能)直接查詢數據庫(這是不太可能被訪問的)並不是這裏的答案 – AD7six

+0

據我所知,如果我們使用默認的Paginator,CakePHP總是使用數據庫中的數據源。就我而言,我從API(http://oxuhandmade.com/api/get_all_films.php)獲取數據並進行分頁。我怎樣才能做到這一點從API的數據返回? –

+0

好吧,我誤解了這個問題,我以爲OP也在設計API。由於無法控制API返回的內容,因此解決方案將按照@ AD7six的建議將返回的數組拆分爲更小的塊。 – linkyndy