Однажды мне было поручено создать API с Laravel для внешней команды разработчиков. Благодаря этому проекту я узнал немного больше о разбиении на страницы, чем хотел бы поделиться.

Возможно, вы уже знаете, как работает разбиение на страницы в Laravel.

Это возвращает разбитый на страницы ответ с двумя (2) записями на страницу и некоторыми метаданными. См. Изображение ниже.

На изображении выше ссылка на следующую страницу «next_page_url» видна как часть ответа. Теперь, если вы внимательно посмотрите на ссылку, вы заметите строку запроса «page = 2», в которой указано количество записей на страницу. Бывают случаи, когда вам может потребоваться изменить это имя ключа. Лично мне пришлось вернуть ответ с двумя отдельными результатами, разбитыми на страницы.

Как изменить ключевой параметр запроса "page".

Это можно сделать двумя способами:
1. Передайте собственное имя в функции разбивки на страницы.
2. Используйте функцию setPageName для результатов, разбитых на страницы.

Решение 1

Передайте собственное имя в функции разбиения на страницы. Метод paginate в Laravel принимает три параметра.

  1. Количество записей на странице
  2. Поля для возврата
  3. Ключ URL страницы. (Это то, что нас интересует.)

В нашем примере это значения по умолчанию для второго и третьего параметров.

Второй параметр - это массив столбцов, которые вы хотите вернуть в ответ, по умолчанию ‘*’, что означает все поля. Однако нас интересует третий параметр «страница», где вы можете указать желаемое имя ключа. Мы будем называть это "users_per_page".

Теперь, если мы снова получим результаты, мы увидим, что строка запроса URL изменится со значения по умолчанию на «users_per_page».

Решение 2

Используйте функцию setPageName для результатов с разбивкой на страницы.

Полученные результаты

Использование любого из вышеперечисленных методов должно дать вам ожидаемые результаты, как показано ниже.

Я закрыл уровень данных, чтобы больше сосредоточиться на метаданных нумерации страниц.

Там мы можем увидеть все URL-адреса страниц с нашим настраиваемым ключом «users_per_page» вместо «page» по умолчанию;

page = 2’ теперь ‘users_per_page = 2’.

Заключение

Это небольшое изменение, которое может сэкономить вам много времени, если вам когда-нибудь понадобится загрузить несколько результатов с разбивкой на страницы в одном ответе. Подробнее о разбиении на страницы Laravel здесь.