РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
885 of 1392 menu

Метод cursorPaginate

Метод cursorPaginate применяется к запросу Eloquent или Query Builder и возвращает экземпляр CursorPaginator. Он принимает два параметра: количество элементов на странице (по умолчанию 15) и массив столбцов для выборки (по умолчанию ['*']). Курсорная пагинация особенно эффективна для бесконечной прокрутки и больших таблиц, так как не использует оператор OFFSET в SQL-запросе, что значительно ускоряет выборку на больших объёмах данных.

Синтаксис

<?php Model::cursorPaginate($perPage, $columns); ?>

Пример

Давайте получим статьи по 5 штук на странице с помощью курсорной пагинации:

<?php namespace AppHttpControllers; use AppModelsArticle; use IlluminateHttpRequest; class ArticleController extends Controller { public function index() { $articles = Article::cursorPaginate(5); return view('articles.index', ['articles' => $articles]); } } ?>

Пример

Давайте выведем статьи с помощью курсорной пагинации в Blade-шаблоне:

@foreach ($articles as $article) <div> <h3>{{ $article->title }}</h3> <p>{{ $article->body }}</p> </div> @endforeach <div> @if ($articles->previousCursor()) <a href="{{ $articles->previousPageUrl() }}">Previous</a> @endif @if ($articles->nextCursor()) <a href="{{ $articles->nextPageUrl() }}">Next</a> @endif </div>

Пример

Давайте используем курсорную пагинацию с выборкой конкретных столбцов:

<?php namespace AppHttpControllers; use AppModelsArticle; use IlluminateHttpRequest; class ArticleController extends Controller { public function index() { $articles = Article::select('id', 'title', 'created_at') ->cursorPaginate(10, ['id', 'title', 'created_at']); foreach ($articles as $article) { echo $article->title . "\n"; } } } ?>

Результат выполнения кода:

"Article 1" "Article 2" "Article 3" "Article 4" "Article 5" "Article 6" "Article 7" "Article 8" "Article 9" "Article 10"

Пример

Давайте используем курсорную пагинацию с условием фильтрации:

<?php namespace AppHttpControllers; use AppModelsArticle; use IlluminateHttpRequest; class ArticleController extends Controller { public function index() { $articles = Article::where('status', 'published') ->orderBy('id') ->cursorPaginate(5); foreach ($articles as $article) { echo $article->title . "\n"; } } } ?>

Результат выполнения кода:

"Published Article 1" "Published Article 2" "Published Article 3" "Published Article 4" "Published Article 5"

Пример

Давайте получим информацию о курсорах текущей страницы:

<?php namespace AppHttpControllers; use AppModelsArticle; use IlluminateHttpRequest; class ArticleController extends Controller { public function index() { $articles = Article::cursorPaginate(3); echo "Next cursor: " . ($articles->nextCursor() ? $articles->nextCursor()->encode() : 'none') . "\n"; echo "Previous cursor: " . ($articles->previousCursor() ? $articles->previousCursor()->encode() : 'none') . "\n"; echo "Has more pages: " . ($articles->hasMorePages() ? 'true' : 'false') . "\n"; } } ?>

Результат выполнения кода:

"Next cursor: eyJpZCI6MywicG9pbnRlciI6eyJpZCI6M319" "Previous cursor: none" "Has more pages: true"

Смотрите также

  • метод paginate,
    который реализует стандартную пагинацию с указанием количества страниц
  • метод simplePaginate,
    который реализует простую пагинацию без общего количества записей
  • класс CursorPaginator,
    который представляет результат курсорной пагинации
  • метод nextCursor,
    который возвращает курсор для следующей страницы
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить