Получите результаты разбиения на страницы в Active Collab API

Я только что обнаружил, что вы можете получить результаты разбиения на страницы через API, передав параметр страницы, например, так:

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

Есть ли способ узнать, сколько временных записей в проекте есть, чтобы я знал, сколько раз мне нужно разбить на страницы?

Или как мне получить данные на несколько страниц — я борюсь с кодом!

3

Решение

Я создал проблему на 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);
}
2

Другие решения

Конечно. Все постраничные результаты будут включать следующие заголовки:

  • X-Angie-PaginationCurrentPage — указывает текущую страницу
  • X-Angie-PaginationItemsPerPage — указывает количество элементов на странице
  • X-Angie-PaginationTotalItems — указывает количество элементов во всем наборе данных.

Когда вы получите значения заголовка, просто:

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

даст вам количество страниц, которые находятся в коллекции.

Альтернатива: Вы можете перебирать страницы (начиная с page GET параметр установлен в 1и увеличивая его), пока не получите пустой результат (страница без записей). Страница, которая не возвращает записей, является последней страницей.

1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector