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

Метод getQuery

Метод getQuery класса Paginator возвращает объект Query, который содержит запрос для выборки элементов текущей страницы. После настройки Paginator этот метод позволяет получить готовый запрос и выполнить его через getResult. Это удобно, когда нужно дополнительно обработать запрос перед выполнением или использовать его в других частях приложения.

Синтаксис

public function getQuery(): Query

Пример

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

<?php namespace App\Controller; use App\Entity\Article; use Doctrine\ORM\EntityManagerInterface; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Attribute\Route; use Knp\Component\Pager\PaginatorInterface; class ArticleController extends AbstractController { #[Route('/articles', name: 'article_list')] public function list(EntityManagerInterface $em, PaginatorInterface $paginator): Response { $qb = $em->createQueryBuilder() ->select('a') ->from(Article::class, 'a') ->orderBy('a.id', 'ASC'); $pagination = $paginator->paginate($qb, 1, 10); $query = $pagination->getQuery(); $res = $query->getResult(); return new Response('Articles count: ' . count($res)); } } ?>

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

Articles count: 10

Пример

Давайте модифицируем запрос после получения через getQuery, добавив условие:

<?php namespace App\Controller; use App\Entity\Article; use Doctrine\ORM\EntityManagerInterface; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Attribute\Route; use Knp\Component\Pager\PaginatorInterface; class ArticleController extends AbstractController { #[Route('/articles/published', name: 'article_published')] public function published(EntityManagerInterface $em, PaginatorInterface $paginator): Response { $qb = $em->createQueryBuilder() ->select('a') ->from(Article::class, 'a') ->orderBy('a.id', 'ASC'); $pagination = $paginator->paginate($qb, 2, 5); $query = $pagination->getQuery(); $query->andWhere('a.boolean = :published') ->setParameter('published', true); $res = $query->getResult(); return new Response('Published articles on page: ' . count($res)); } } ?>

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

Published articles on page: 5

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

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