Метод setMaxResults
Метод setMaxResults класса Query ограничивает
количество строк, которое вернёт SQL-запрос. Первым
параметром передаётся целое число - максимальное
количество записей. Метод возвращает сам объект Query,
поэтому его можно вызывать в цепочке с другими методами.
Синтаксис
$query->setMaxResults(int $maxResults): self
Пример
Давайте получим только первые две статьи из базы данных:
<?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 index(EntityManagerInterface $em): Response
{
$query = $em->createQuery('SELECT a FROM App\Entity\Article a');
$query->setMaxResults(2);
$res = $query->getResult();
return new Response(implode(', ', array_map(
fn(Article $article) => $article->getTitle(),
$res
)));
}
}
?>
Результат выполнения кода:
"article 1, article 2"
Пример
Давайте применим метод setMaxResults для постраничного вывода вместе с методом setFirstResult:
<?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 index(EntityManagerInterface $em): Response
{
$page = 2;
$perPage = 3;
$query = $em->createQuery('SELECT a FROM App\Entity\Article a ORDER BY a.id ASC');
$query->setFirstResult(($page - 1) * $perPage);
$query->setMaxResults($perPage);
$res = $query->getResult();
return new Response(implode(', ', array_map(
fn(Article $article) => $article->getTitle(),
$res
)));
}
}
?>
Результат выполнения кода:
"article 4, article 5, article 6"
Смотрите также
-
класс
Query,
который представляет собой DQL-запрос -
метод
setFirstResult,
который задаёт смещение первой строки выборки -
метод
getResult,
который возвращает результат запроса -
метод
toIterable,
который возвращает итерируемый результат