$queryBuilder = $this->createQueryBuilder('account_event');
$queryBuilder
->select('account_event.id AS AE_id', 'IDENTITY(account_event.event) AS event_id', 'account_event.dueDate as due_date', 'IDENTITY(account_event.account) AS account_id')
->where(
$queryBuilder->expr()->in(
'account_event.id',
$this->createQueryBuilder('subquery_repository')
->select('MAX(ae2.id)')
->from(AccountEvent::class,'ae2')
->andWhere('ae2.event IN (:events)')
->andWhere('ae2.account IN (:accounts)')
->andWhere('ae2.dueDate > DATE(:date)')
->groupBy('ae2.account')
->getDQL()
)
)
->setParameter('events', $events)
->setParameter('accounts', $accounts)
->setParameter('date', $date->format('Y-m-d'))
;