getThirdParties()->getObjects(); foreach ($thirdParties as $name => $thirdParty) { if ('a' === $name[0]) { // this is an address continue; } foreach ($this->getCenters() as $center) { $thirdParty->addCenter($center); } $manager->persist($thirdParty); } $manager->flush(); } private function getCenters(): \Iterator { $references = \array_map(function($a) { return $a['ref']; }, LoadCenters::$centers); $number = random_int(1, count($references)); if ($number === 1) { yield $this->getReference($references[\array_rand($references)]); } else { foreach (array_rand($references, $number) as $index) { yield $this->getReference($references[$index]); } } } public function getDependencies() { return [ LoadCenters::class, LoadPostalCodes::class ]; } private function getThirdParties(): ObjectSet { $loader = new NativeLoader(); $objectSet = $loader->loadData([ Address::class => [ 'address{1..75}' => [ 'street' => '', 'streetNumber' => '', 'validFrom' => '', 'postCode' => $this->getPostalCode() ], ], ThirdParty::class => [ 'thirdparty{1..75}' => [ 'name' => '', 'telephone' => '', 'email' => '', 'comment' => '', 'address' => '@address' ] ] ]); return $objectSet; } private function getPostalCode(): PostalCode { $ref = LoadPostalCodes::$refs[\array_rand(LoadPostalCodes::$refs)]; return $this->getReference($ref); if (count($this->postalCodesIds) === 0) { // fill the postal codes $this->em->createQuery('SELECT p.id FROM '.PostalCode::class) ->getScalarResult(); } $id = $this->postalCodesIds[\array_rand($this->postalCodesIds)]; return $this->em->getRepository(PostalCode::class) ->find($id); } private function createAddress(): ObjectSet { $loader = new NativeLoader(); $objectSet = $loader->loadData([ Address::class => [ 'address1' => [ 'name' => '', 'telephone' => '', 'email' => '', 'comment' => '' ] ] ]); return $objectSet; } }