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;
}
}