Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
230 of 258 menu
◀ ▶

Метод orderBy класса Criteria

Метод orderBy класса Criteria добавляет правило сортировки элементов коллекции. Первым параметром передаётся имя поля, по которому нужно отсортировать элементы. Вторым параметром передаётся направление сортировки: Criteria::ASC для сортировки по возрастанию или Criteria::DESC для сортировки по убыванию. Метод возвращает сам объект Criteria, поэтому его можно вызывать цепочкой.

Синтаксис

$criteria->orderBy(string $field, string $order = Criteria::ASC)

Пример

Давайте отсортируем коллекцию статей по полю title по возрастанию:

<?php namespace App\Controller; use Doctrine\Common\Collections\ArrayCollection; use Doctrine\Common\Collections\Criteria; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; class ArticleController extends AbstractController { public function index(): Response { $collection = new ArrayCollection([ ['title' => 'abcde', 'views' => 3], ['title' => 'article', 'views' => 1], ['title' => 'user', 'views' => 2], ]); $criteria = Criteria::create()->orderBy(['title' => Criteria::ASC]); $res = $collection->matching($criteria)->toArray(); return new Response(json_encode($res)); } } ?>

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

[{"title":"abcde","views":3},{"title":"article","views":1},{"title":"user","views":2}]

Пример

Давайте отсортируем коллекцию статей по полю views по убыванию:

<?php namespace App\Controller; use Doctrine\Common\Collections\ArrayCollection; use Doctrine\Common\Collections\Criteria; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; class ArticleController extends AbstractController { public function index(): Response { $collection = new ArrayCollection([ ['title' => 'abcde', 'views' => 3], ['title' => 'article', 'views' => 1], ['title' => 'user', 'views' => 2], ]); $criteria = Criteria::create()->orderBy(['views' => Criteria::DESC]); $res = $collection->matching($criteria)->toArray(); return new Response(json_encode($res)); } } ?>

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

[{"title":"abcde","views":3},{"title":"user","views":2},{"title":"article","views":1}]

Пример

Давайте зададим сортировку сразу по двум полям: сначала по views по убыванию, затем по title по возрастанию:

<?php namespace App\Controller; use Doctrine\Common\Collections\ArrayCollection; use Doctrine\Common\Collections\Criteria; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; class ArticleController extends AbstractController { public function index(): Response { $collection = new ArrayCollection([ ['title' => 'user', 'views' => 1], ['title' => 'abcde', 'views' => 3], ['title' => 'article', 'views' => 1], ]); $criteria = Criteria::create()->orderBy([ 'views' => Criteria::DESC, 'title' => Criteria::ASC, ]); $res = $collection->matching($criteria)->toArray(); return new Response(json_encode($res)); } } ?>

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

[{"title":"abcde","views":3},{"title":"article","views":1},{"title":"user","views":1}]

Пример

Давайте скомбинируем сортировку с фильтрацией через метод where:

<?php namespace App\Controller; use Doctrine\Common\Collections\ArrayCollection; use Doctrine\Common\Collections\Criteria; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; class ArticleController extends AbstractController { public function index(): Response { $collection = new ArrayCollection([ ['title' => 'abcde', 'views' => 3], ['title' => 'article', 'views' => 1], ['title' => 'user', 'views' => 5], ]); $criteria = Criteria::create() ->where(Criteria::expr()->gt('views', 2)) ->orderBy(['views' => Criteria::ASC]); $res = $collection->matching($criteria)->toArray(); return new Response(json_encode($res)); } } ?>

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

[{"title":"abcde","views":3},{"title":"user","views":5}]

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

  • класс Criteria,
    который задаёт условия выборки элементов коллекции
  • метод create,
    который создаёт новый объект Criteria
  • метод where,
    который задаёт условие фильтрации элементов
  • метод setMaxResults,
    который ограничивает количество возвращаемых элементов
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить