getRepository(Bovine::class); $caseRepository = $manager->getRepository(BuildingCase::class); foreach ($rows as [, $legacyCaseId, $nationalNumber, $receivedWeight, $arrivalDate]) { $buildingCase = $this->resolveBuildingCaseByLegacyId($manager, (int) $legacyCaseId); if (!$buildingCase instanceof BuildingCase) { $buildingCase = $caseRepository->find((int) $legacyCaseId); } if (!$buildingCase instanceof BuildingCase) { continue; } /** @var null|Bovine $bovine */ $bovine = $bovineRepository->findOneBy(['nationalNumber' => (string) $nationalNumber]); if (!$bovine instanceof Bovine) { $bovine = new Bovine(); } $bovine ->setNationalNumber((string) $nationalNumber) ->setBuildingCase($buildingCase) ->setReceivedWeight((int) $receivedWeight) ->setArrivalDate(new DateTimeImmutable((string) $arrivalDate)) ; $manager->persist($bovine); } $manager->flush(); } public function getDependencies(): array { return [ BuildingInfrastructureFixtures::class, ]; } private function resolveBuildingCaseByLegacyId(ObjectManager $manager, int $legacyCaseId): ?BuildingCase { if ($legacyCaseId < 1) { return null; } $buildingNumber = intdiv($legacyCaseId - 1, 44) + 1; $caseNumber = (($legacyCaseId - 1) % 44) + 1; if ($buildingNumber < 1 || $buildingNumber > 3) { return null; } $code = sprintf('B%d-C%d', $buildingNumber, $caseNumber); $buildingCase = $manager->getRepository(BuildingCase::class)->findOneBy(['code' => $code]); return $buildingCase instanceof BuildingCase ? $buildingCase : null; } }