Метод setMaxResults класса Criteria
Метод setMaxResults класса Criteria задаёт максимальное количество элементов, которое вернёт выборка. Первым параметром передаётся целое число - лимит элементов. Метод возвращает объект Criteria, поэтому его можно вызывать в цепочке с другими методами, например с orderBy или setFirstResult.
Синтаксис
$criteria->setMaxResults(int $maxResults): static
Пример
Давайте создадим критерий с лимитом в 3 элемента и применим его к коллекции:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Criteria;
class ArticleController extends AbstractController
{
public function index(): Response
{
$collection = new ArrayCollection([1, 2, 3, 4, 5]);
$criteria = Criteria::create();
$criteria->setMaxResults(3);
$res = $collection->matching($criteria)->toArray();
return new Response(json_encode($res));
}
}
?>
Результат выполнения кода:
[1, 2, 3]
Пример
Давайте объединим лимит с сортировкой по убыванию:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Criteria;
class ArticleController extends AbstractController
{
public function index(): Response
{
$collection = new ArrayCollection([1, 2, 3, 4, 5]);
$criteria = Criteria::create();
$criteria->orderBy(['value' => 'DESC']);
$criteria->setMaxResults(2);
$res = $collection->matching($criteria)->toArray();
return new Response(json_encode($res));
}
}
?>
Результат выполнения кода:
[5, 4]
Пример
Давайте используем setMaxResults вместе с setFirstResult для постраничной выборки:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Criteria;
class ArticleController extends AbstractController
{
public function index(): Response
{
$collection = new ArrayCollection([1, 2, 3, 4, 5]);
$criteria = Criteria::create();
$criteria->setFirstResult(2);
$criteria->setMaxResults(2);
$res = $collection->matching($criteria)->toArray();
return new Response(json_encode($res));
}
}
?>
Результат выполнения кода:
[3, 4]
Смотрите также
-
класс
Criteria,
который задаёт условия выборки из коллекции -
метод
setFirstResult,
который задаёт смещение начала выборки -
метод
orderBy,
который задаёт сортировку выборки -
метод
matching,
который применяет критерий к коллекции