phoneNumberUtil = PhoneNumberUtil::getInstance(); } public function getDependencies() { return [ LoadCenters::class, LoadPostalCodes::class, ]; } public function load(ObjectManager $manager) { $thirdParties = $this->getThirdParties()->getObjects(); foreach ($thirdParties as $name => $thirdParty) { if ('a' === $name[0]) { // this is an address continue; } $thirdParty->setCreatedAt(new DateTimeImmutable('today')); foreach ($this->getCenters() as $center) { $thirdParty->addCenter($center); } $manager->persist($thirdParty); } $manager->flush(); } private function createAddress(): ObjectSet { $loader = new NativeLoader(); return $loader->loadData([ Address::class => [ 'address1' => [ 'name' => '', 'telephone' => $this->phoneNumberUtil->getExampleNumber('FR'), 'email' => '', 'comment' => '', ], ], ]); } private function getCenters(): Iterator { $references = array_map( static function ($a) { return $a['ref']; }, LoadCenters::$centers ); $number = random_int(1, count($references)); if (1 === $number) { yield $this->getReference($references[array_rand($references)]); } else { foreach (array_rand($references, $number) as $index) { yield $this->getReference($references[$index]); } } } private function getPostalCode(): PostalCode { $ref = LoadPostalCodes::$refs[array_rand(LoadPostalCodes::$refs)]; return $this->getReference($ref); } private function getThirdParties(): ObjectSet { $loader = new NativeLoader(); return $loader->loadData([ Address::class => [ 'address{1..75}' => [ 'street' => '', 'streetNumber' => '', 'validFrom' => '', 'postCode' => $this->getPostalCode(), ], ], ThirdParty::class => [ 'thirdparty{1..75}' => [ 'name' => '', 'telephone' => $this->phoneNumberUtil->getExampleNumber('FR'), 'email' => '', 'comment' => '', 'address' => '@address', ], ], ]); } }