faker = \Faker\Factory::create('fr_FR'); } public function createEvents(Center $center, ObjectManager $manager) { $expectedNumber = 20; $events = []; for ($i = 0; $i < $expectedNumber; ++$i) { $event = (new Event()) ->setDate($this->faker->dateTimeBetween('-2 years', '+6 months')) ->setName($this->faker->words(random_int(2, 4), true)) ->setType($this->getReference(LoadEventTypes::$refs[array_rand(LoadEventTypes::$refs)])) ->setCenter($center) ->setCircle( $this->getReference( LoadScopes::$references[array_rand(LoadScopes::$references)] ) ); $manager->persist($event); $events[] = $event; } return $events; } public function getOrder(): int { return 30010; } public function load(ObjectManager $manager): void { $centers = $manager->getRepository(Center::class) ->findAll(); foreach ($centers as $center) { $people = $manager->getRepository(Person::class) ->findBy(['center' => $center]); $events = $this->createEvents($center, $manager); /** @var Person $person */ foreach ($people as $person) { $nb = random_int(0, 3); for ($i = 0; $i < $nb; ++$i) { $event = $events[array_rand($events)]; $role = $event->getType()->getRoles()->get( array_rand($event->getType()->getRoles()->toArray()) ); $status = $event->getType()->getStatuses()->get( array_rand($event->getType()->getStatuses()->toArray()) ); $participation = (new Participation()) ->setPerson($person) ->setRole($role) ->setStatus($status) ->setEvent($event); $manager->persist($participation); } } } $manager->flush(); } }