Я только что обнаружил, что вы можете получить результаты разбиения на страницы через API, передав параметр страницы, например, так:
$projects = $client->get('projects/147/time-records?page=3')->getJson();
Есть ли способ узнать, сколько временных записей в проекте есть, чтобы я знал, сколько раз мне нужно разбить на страницы?
Или как мне получить данные на несколько страниц — я борюсь с кодом!
Я создал проблему на 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);
}
Конечно. Все постраничные результаты будут включать следующие заголовки:
X-Angie-PaginationCurrentPage
— указывает текущую страницуX-Angie-PaginationItemsPerPage
— указывает количество элементов на страницеX-Angie-PaginationTotalItems
— указывает количество элементов во всем наборе данных.Когда вы получите значения заголовка, просто:
$total_pages = ceil($total_items_header_value / $items_per_page_header_value);
даст вам количество страниц, которые находятся в коллекции.
Альтернатива: Вы можете перебирать страницы (начиная с page
GET параметр установлен в 1
и увеличивая его), пока не получите пустой результат (страница без записей). Страница, которая не возвращает записей, является последней страницей.