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

Метод count

Метод count класса Paginator возвращает общее количество элементов в пагинируемой выборке. Это число не зависит от текущей страницы и показывает, сколько всего записей соответствует запросу. Метод не принимает параметров.

Синтаксис

public function count(): int

Пример

Давайте создадим пагинатор для массива из пяти элементов и получим общее количество записей:

<?php namespace AppController; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentRoutingAttributeRoute; use SymfonyComponentPaginationPaginator; class ArticleController extends AbstractController { #[Route('/articles', name: 'article_index')] public function index(): Response { $items = ['a', 'b', 'c', 'd', 'e']; $paginator = new Paginator($items, 2); return new Response((string) $paginator->count()); } } ?>

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

5

Пример

Давайте сравним значение count с количеством элементов на текущей странице. Метод getIterator вернёт только элементы текущей страницы:

<?php namespace AppController; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentRoutingAttributeRoute; use SymfonyComponentPaginationPaginator; class ArticleController extends AbstractController { #[Route('/articles', name: 'article_index')] public function index(): Response { $items = ['a', 'b', 'c', 'd', 'e']; $paginator = new Paginator($items, 2); $total = $paginator->count(); $current = count($paginator->getIterator()); return new Response("total: {$total}, current: {$current}"); } } ?>

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

"total: 5, current: 2"

Пример

Давайте используем метод count для расчёта общего количества страниц. Передадим в пагинатор сущности Doctrine:

<?php namespace AppController; use AppRepositoryArticleRepository; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentRoutingAttributeRoute; use SymfonyComponentPaginationPaginator; class ArticleController extends AbstractController { #[Route('/articles', name: 'article_index')] public function index(ArticleRepository $repository): Response { $query = $repository->createQueryBuilder('a') ->orderBy('a.id', 'ASC') ->getQuery(); $paginator = new Paginator($query, 10); $total = $paginator->count(); $pages = (int) ceil($total / 10); return new Response("total: {$total}, pages: {$pages}"); } } ?>

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

"total: 25, pages: 3"

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

  • класс Paginator,
    который выполняет пагинацию выборки
  • метод getIterator,
    который возвращает элементы текущей страницы
  • метод getQuery,
    который возвращает исходный запрос пагинатора
  • метод setUseOutputWalkers,
    который управляет стратегией обхода результатов
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить