Метод 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