info('Starting backfill of error codes...'); $totalProcessed = 0; $totalUpdated = 0; while (true) { $entries = $this->logEntryRepository->createQueryBuilder('l') ->where('l.errorCode IS NULL') ->andWhere('l.extra LIKE :pattern') ->setParameter('pattern', '%error_code%') ->orderBy('l.id', 'ASC') ->setMaxResults(self::BATCH_SIZE) ->getQuery() ->getResult(); if ([] === $entries) { break; } foreach ($entries as $entry) { /** @var LogEntry $entry */ $extra = $entry->getExtra(); if (isset($extra['error_code']) && null === $entry->getErrorCode()) { $entry->setErrorCode($extra['error_code']); ++$totalUpdated; } ++$totalProcessed; } $this->entityManager->flush(); $this->entityManager->clear(); $io->writeln(sprintf('Processed %d entries, %d updated so far', $totalProcessed, $totalUpdated)); } $message = sprintf('Backfill complete. Processed %d entries, updated %d with error codes.', $totalProcessed, $totalUpdated); $io->success($message); return Command::SUCCESS; } }