entityManager ->getRepository(Teamer::class) ->createQueryBuilder('teamer') ; $teamersToUpdate = $qb ->innerJoin('teamer.dispositions', 'disposition') ->where($qb->expr()->andX( $qb->expr()->eq('teamer.status', ':teamer_status'), $qb->expr()->eq('disposition.status', ':disposition_status') )) ->groupBy('teamer.id') ->setParameters([ 'teamer_status' => Teamer::STATUS_NEW, 'disposition_status' => Disposition::STATUS_COMPLETED, ]) ->getQuery() ->getResult() ; $teamersCount = count($teamersToUpdate); if (0 === $teamersCount) { $output->writeln('No teamer status to update'); return Command::SUCCESS; } foreach ($teamersToUpdate as $teamer) { $teamer->setStatus(Teamer::STATUS_EXISTING); } $this->entityManager->flush(); $output->writeln('Updated '.$teamersCount.' teamer status'); $this->logger->info('Update teamers status', [ 'teamers_count' => $teamersCount, ]); return Command::SUCCESS; } }