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

Метод setMaxResults

Метод setMaxResults класса QueryBuilder задаёт максимальное количество записей, которое вернёт запрос. Первым параметром передаётся целое число - лимит выборки. Метод возвращает сам объект QueryBuilder, что позволяет строить цепочки вызовов.

Синтаксис

setMaxResults(int $maxResults): self

Пример

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

<?php namespace App\Repository; use App\Entity\Article; use Doctrine\ORM\EntityRepository; class ArticleRepository extends EntityRepository { public function findFirstThree(): array { $qb = $this->createQueryBuilder('a'); $qb->select('a') ->setMaxResults(3); return $qb->getQuery()->getResult(); } } ?>

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

[ Article { id: 1, title: 'abcde' }, Article { id: 2, title: 'article' }, Article { id: 3, title: 'user' } ]

Пример

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

<?php namespace App\Controller; use App\Entity\Article; use Doctrine\ORM\EntityManagerInterface; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; class ArticleController extends AbstractController { public function show(EntityManagerInterface $em): Response { $qb = $em->createQueryBuilder(); $qb->select('a') ->from(Article::class, 'a') ->setMaxResults(1); $article = $qb->getQuery()->getOneOrNullResult(); return new Response($article->getTitle()); } } ?>

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

abcde

Пример

Давайте применим лимит вместе с сортировкой и смещением через setFirstResult:

<?php namespace App\Repository; use App\Entity\Article; use Doctrine\ORM\EntityRepository; class ArticleRepository extends EntityRepository { public function findPage(int $page, int $perPage): array { $qb = $this->createQueryBuilder('a'); $qb->select('a') ->orderBy('a.id', 'ASC') ->setMaxResults($perPage) ->setFirstResult(($page - 1) * $perPage); return $qb->getQuery()->getResult(); } } ?>

Результат выполнения кода для $page = 2 и $perPage = 2:

[ Article { id: 3, title: 'user' }, Article { id: 4, title: 'hello' } ]

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

  • класс QueryBuilder,
    который строит DQL-запросы
  • метод setFirstResult,
    который задаёт смещение выборки
  • метод orderBy,
    который задаёт сортировку записей
  • метод getQuery,
    который возвращает объект Query
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить