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

Метод getIterator класса Paginator

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

Синтаксис

public function getIterator(): Traversable

Пример

Давайте создадим пагинатор и переберём его элементы через цикл foreach:

<?php namespace AppController; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentRoutingAttributeRoute; use DoctrineORMEntityManagerInterface; use DoctrineORMQueryBuilder; class ArticleController extends AbstractController { #[Route('/articles', name: 'article_index')] public function index(EntityManagerInterface $em): Response { $qb = $em->createQueryBuilder(); $qb->select('a') ->from('AppEntityArticle', 'a') ->orderBy('a.id', 'ASC'); $paginator = new Paginator($qb, true); $paginator->getQuery() ->setFirstResult(0) ->setMaxResults(3); $res = []; foreach ($paginator->getIterator() as $article) { $res[] = $article->getTitle(); } return new Response(implode(', ', $res)); } } ?>

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

"article 1, article 2, article 3"

Пример

Давайте переберём элементы пагинатора без явного вызова метода getIterator - цикл foreach вызовет его автоматически, так как Paginator реализует интерфейс IteratorAggregate:

<?php namespace AppController; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentRoutingAttributeRoute; use DoctrineORMEntityManagerInterface; class ArticleController extends AbstractController { #[Route('/articles', name: 'article_index')] public function index(EntityManagerInterface $em): Response { $qb = $em->createQueryBuilder(); $qb->select('a') ->from('AppEntityArticle', 'a') ->orderBy('a.id', 'ASC'); $paginator = new Paginator($qb, true); $paginator->getQuery() ->setFirstResult(0) ->setMaxResults(5); $res = []; foreach ($paginator as $article) { $res[] = $article->getTitle(); } return new Response(implode(', ', $res)); } } ?>

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

"article 1, article 2, article 3, article 4, article 5"

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

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