Я только что обнаружил, что вы можете получить результаты разбивки на страницы через 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
, и увеличивая его), пока не получите пустой результат (страница без записей). Страница, которая не возвращает записей, является последней.