РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
228 of 258 menu

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

Метод andWhere класса Criteria добавляет новое условие к уже существующему фильтру коллекции, объединяя их через логическое И. Первым параметром передаётся строка с выражением, вторым - значение для подстановки в это выражение. Метод возвращает сам объект Criteria, что позволяет строить цепочки вызовов.

Метод удобен, когда нужно последовательно наращивать условия фильтрации в зависимости от логики приложения, не переписывая исходное выражение полностью.

Синтаксис

$criteria->andWhere(string $expr, mixed $value): Criteria

Пример

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

<?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', 'status' => 'active', 'views' => 10], ['title' => 'article', 'status' => 'active', 'views' => 5], ['title' => 'user', 'status' => 'draft', 'views' => 20], ['title' => 'hello', 'status' => 'active', 'views' => 30], ]); $criteria = Criteria::create() ->where(Criteria::expr()->eq('status', 'active')) ->andWhere(Criteria::expr()->gt('views', 15)); $res = $collection->matching($criteria)->toArray(); return new Response(json_encode($res)); } } ?>

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

[{"title": "hello", "status": "active", "views": 30}]

Пример

Давайте добавим два условия через andWhere для фильтрации по трём полям:

<?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', 'status' => 'active', 'views' => 10, 'published' => true], ['title' => 'article', 'status' => 'active', 'views' => 25, 'published' => false], ['title' => 'user', 'status' => 'active', 'views' => 30, 'published' => true], ['title' => 'hello', 'status' => 'draft', 'views' => 40, 'published' => true], ]); $criteria = Criteria::create() ->where(Criteria::expr()->eq('status', 'active')) ->andWhere(Criteria::expr()->gt('views', 15)) ->andWhere(Criteria::expr()->eq('published', true)); $res = $collection->matching($criteria)->toArray(); return new Response(json_encode($res)); } } ?>

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

[{"title": "user", "status": "active", "views": 30, "published": true}]

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

  • метод where,
    который задаёт первое условие фильтрации
  • метод orWhere,
    который добавляет условие через логическое ИЛИ
  • класс Criteria,
    который описывает критерий фильтрации коллекции
  • метод matching,
    который применяет критерий к коллекции
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить