Skip to main content

GROUP BY Usage

We add the advanced GROUP BY functionality to Doctrine ORM queries by using an SQL walker.

Example Usage

use Doctrine\ORM\QueryBuilder;
use Rekalogika\DoctrineAdvancedGroupBy\GroupBy;
use Rekalogika\DoctrineAdvancedGroupBy\GroupingSet;
use Rekalogika\DoctrineAdvancedGroupBy\FieldSet;
use Rekalogika\DoctrineAdvancedGroupBy\Field;

/** @var QueryBuilder $queryBuilder */

$queryBuilder
->from(SomeEntity::class, 'e')
->select('e.a AS a')
->addSelect('e.b AS b')
->addSelect('e.c AS c')
->addSelect('e.d AS d');

$groupBy = new GroupBy(
new GroupingSet(
new FieldSet(
new Field('a'),
new Field('b'),
),
new FieldSet(
new Field('c'),
new Field('d'),
),
),
);

$query = $queryBuilder->getQuery();
$groupBy->apply($query);
$result = $query->getResult();

Class Diagram

GroupBy GroupBY