addSelect("to_char(cal.startDate, 'MM-YYYY') AS month_year_aggregator"); // $qb->addSelect("extract(month from age(cal.startDate, cal.endDate)) AS month_aggregator"); $qb->addGroupBy('month_year_aggregator'); } public function applyOn(): string { return Declarations::CALENDAR_TYPE; } public function buildForm(FormBuilderInterface $builder) { // No form needed } public function getFormDefaultData(): array { return []; } public function getLabels($key, array $values, $data): Closure { return static function ($value): string { if ('_header' === $value) { return 'by month and year'; } return $value; }; } public function getQueryKeys($data): array { return ['month_year_aggregator']; } public function getTitle(): string { return 'Group calendars by month and year'; } }