3

我刚刚发现您可以通过 api 通过传入 page 参数来获取分页结果,如下所示:

$projects = $client->get('projects/147/time-records?page=3')->getJson();

有没有办法知道一个项目有多少次记录,所以我知道我需要分页多少次?

或者,我将如何检索几页有价值的数据 - 我正在为代码苦苦挣扎!

4

3 回答 3

2

当然。所有分页结果将包括以下标题:

  • X-Angie-PaginationCurrentPage- 表示当前页面
  • X-Angie-PaginationItemsPerPage- 表示每页的项目数
  • X-Angie-PaginationTotalItems- 表示整个数据集中的项目数。

当您获得标头值时,很简单:

$total_pages = ceil($total_items_header_value / $items_per_page_header_value);

将为您提供集合中的页数。

替代方案:您可以遍历页面(通过将pageGET 参数设置为开始1并递增它),直到获得空结果(没有记录的页面)。不返回记录的页面是最后一页。

于 2016-10-13T12:21:28.767 回答
2

我在Github上创建了一个问题- 将等待回复。

现在,我执行以下操作:

// Get all the projects

// Set the page number
$page = 1;

// Create an empty array
$project_records = array();

// Get the first page of results
$project_records_results = $client->get('projects?page=' . $page)->getJson();

// Merge the results with base array
$project_records = array_merge($project_records, $project_records_results);

// Get the next page of results, 
// if it returns something merge with the base array and continue
while ($project_records_results = $client->get('projects?page=' . ++$page)->getJson()) {
    $project_records = array_merge($project_records, $project_records_results);
}
于 2016-10-19T16:11:55.277 回答
0

请注意,标题现在都是小写的(v1)!所以上面的答案应该更正。

让他们打电话:

$headers = $client->get($path)->getHeaders();

/api/v1/ 中的工作代码示例:

$paginationCurrentPage = isset($headers['x-angie-paginationcurrentpage'][0]) ? $headers['x-angie-paginationcurrentpage'][0] : NULL;
$paginationItemsPerPage = isset($headers['x-angie-paginationitemsperpage'][0]) ? $headers['x-angie-paginationitemsperpage'][0] : NULL;
$paginationTotalItems = isset($headers['x-angie-paginationtotalitems'][0]) ? $headers['x-angie-paginationtotalitems'][0] : NULL;
于 2020-07-08T14:49:32.753 回答