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

Метод addGroupBy

Метод addGroupBy класса QueryBuilder добавляет новое выражение группировки в секцию GROUP BY DQL-запроса. В отличие от метода groupBy, который заменяет все ранее установленные выражения группировки, addGroupBy добавляет поле к уже имеющимся. Первым параметром передаётся строка с именем поля или выражением группировки.

Синтаксис

addGroupBy(string $groupBy): QueryBuilder

Пример

Давайте сгруппируем статьи по полю category и посчитаем их количество:

<?php namespace AppController; use AppEntityArticle; use DoctrineORMEntityManagerInterface; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; class ArticleController extends AbstractController { public function index(EntityManagerInterface $em): Response { $qb = $em->createQueryBuilder(); $qb->select('a.category, COUNT(a.id) as cnt') ->from(Article::class, 'a') ->addGroupBy('a.category'); $res = $qb->getQuery()->getResult(); return new Response(json_encode($res)); } } ?>

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

[{"category": "abcde", "cnt": 3}, {"category": "article", "cnt": 5}]

Пример

Давайте добавим группировку сразу по двум полям, используя addGroupBy дважды:

<?php namespace AppController; use AppEntityArticle; use DoctrineORMEntityManagerInterface; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; class ArticleController extends AbstractController { public function index(EntityManagerInterface $em): Response { $qb = $em->createQueryBuilder(); $qb->select('a.category, a.status, COUNT(a.id) as cnt') ->from(Article::class, 'a') ->addGroupBy('a.category') ->addGroupBy('a.status'); $res = $qb->getQuery()->getResult(); return new Response(json_encode($res)); } } ?>

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

[{"category": "abcde", "status": true, "cnt": 2}, {"category": "article", "status": false, "cnt": 4}]

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

  • метод groupBy,
    который заменяет выражения группировки
  • метод having,
    который задаёт условие для сгруппированных данных
  • метод select,
    который задаёт выбираемые поля
  • класс QueryBuilder,
    который строит DQL-запросы
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить