РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
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 для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить