2014-06-17 98 views
0

我拉回一個月的數據使用: $ page = 1; $ filter = array('page'=> $ page,'limit'=> 250,'min_date_created'=> $ startDate); $ orders = Bigcommerce :: getOrders($ filter);Bigcommerce通過訂單分頁

我傳遞$ startDate作爲2014-01-06(它適用於訂單)。

該訂單約600,所以我需要翻閱結果。

我使用:

$filterCount = array ('status_id' => 2 ,'min_date_created' => $startDate); 
$count = Bigcommerce::getOrdersCount($filterCount); 

我應該再能$除以250算給我的頁數。不過$ count總是8773,不管我怎麼玩$ filterCount。

我在這裏做些什麼愚蠢的事嗎?

沃比先生。

回答

1

您想用您的過濾器參數而不是getOrdersCount調用getOrders,因爲該資源始終返回訂單總數。

+0

Hi @LaurenceB。問題是,如果有超過250個訂單,我使用getOrders,我只看到第一個250即page1。除非我錯過了一些東西。你說'getOrders返回訂單總數'。我如何得到這個數字。 Warby先生 – user3193843

+0

這是一個兩步驟的過程。首先獲得總訂單數(您是),除以250以獲得頁數。 (不要忘記在頁數上添加+1來捕獲剩餘的訂單)。然後在for循環中調用帶有page = x過濾器的getOrders。至少我是這麼做的。 – LarryB

+0

對不起,想了解更多,我想我應該澄清我的迴應:仍然使用getOrdersCount獲取訂單總數,然後除以250獲得頁數,然後添加+1以捕獲任何剩餘訂單。獲得該數字後,在for循環中使用getOrders,使用page = x和limit = 250過濾器來遍歷結果。 – LarryB

0

看着你的代碼,你正在使用PHP庫。 看看getCount方法,它不會採取'過濾器'參數。

public static function getCount($path) 
    { 
     $response = self::connection()->get(self::$api_path . $path); 
     if ($response == false || is_string($response)) { 
      return $response; 
     } 
     return $response->count; 
    } 

正如你所說,我會用$reponse->count/250給你的網頁。 而不是+1到這個我會使用$pages = ceil($reponse->count/250)然後在你的FOR語句使用LESS THAN EQUAL TOO,這將永遠給你正確的頁面數量。

當循環瀏覽頁面時,請檢查沒有響應,因爲您正在過濾日期,所需的實際頁面可能會少很多。如果收到一個空物體,你可以打破這個循環。 (我認爲他們排序最早 - >最新)。

希望這會有所幫助。