Вы можете установить этот пакет через композитор, используя:
composer require juampi92/cursor-pagination
Config
Чтобы опубликовать файл конфигурации на config/cursor_pagination.php
, запустите:
php artisan vendor:publish --provider="Juampi92\CursorPagination\CursorPaginationServiceProvider" --tag="config"
Как это работает
Основная идея пагинации курсора заключается в том, что ему нужен контекст, чтобы знать, какие результаты будут показаны далее. Поэтому вместо того, чтобы говорить page=2
, вы говорите next_cursor=10
. Результат аналогичен старомодной нумерации страниц, но теперь у вас есть больше контроля над выводом, потому что next_cursor=10
всегда должен возвращать то же самое (если не удалены некоторые записи).
Плюсы
- Новые строки не влияют на результат, поэтому дублирование результатов при разбивке на страницы не допускается.
- Фильтрация с помощью индексированного курсора намного быстрее, чем смещение базы данных.
- Использование предыдущего курсора, чтобы избежать дублирования первых элементов.
Против
Нет предыдущей страницы, хотя в браузере они по-прежнему есть.
Нет перехода к произвольным страницам (вы должны знать предыдущий результат, чтобы знать следующие).
Построитель разбивки на страницы результатов
Существует несколько способов разбиения на страницы. Самый простой способ - использовать метод cursorPaginate
в конструкторе запросов или Eloquent запрос . Метод cursorPaginate
автоматически устанавливает правильный предел и выбирает следующий или предыдущий элемент на основе курсора, просматриваемого пользователем. По умолчанию cursor
определяется значением аргумента строки запроса страницы в HTTP-запросе. Это значение автоматически определяется пакетом с учетом вашей пользовательской конфигурации, а также автоматически вставляется в ссылки и мета-страницы, генерируемые paginator.
public function index()
{
$users = DB::table('users')->cursorPaginate();
return $users;
}