> $existing */ $existing = []; for ($i = 0; 20 > $i; ++$i) { $user = $this->getRandomUser(); $date = new DateTimeImmutable(); $relationship = (new Relationship()) ->setFromPerson($this->getRandomPerson($this->em)) ->setToPerson($this->getRandomPerson($this->em)) ->setRelation($this->getReference(LoadRelations::RELATION_KEY . random_int(0, count(LoadRelations::RELATIONS) - 1))) ->setReverse((bool) random_int(0, 1)) ->setCreatedBy($user) ->setUpdatedBy($user) ->setCreatedAt($date) ->setUpdatedAt($date); // remove the potential duplicates $set = [ min($relationship->getFromPerson()->getId(), $relationship->getToPerson()->getId()), max($relationship->getFromPerson()->getId(), $relationship->getToPerson()->getId()), ]; if (array_key_exists($set[0], $existing) && array_key_exists($set[1], $existing[$set[0]])) { continue; } $existing[$set[0]][$set[1]] = 1; $manager->persist($relationship); } $manager->flush(); } private function getRandomUser(): User { $userRef = array_rand(LoadUsers::$refs); return $this->getReference($userRef); } }