Nested Queries with Query Builder

$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'))
        ;

Leave a Reply

Your email address will not be published. Required fields are marked *