public function persistRelationship($entityA, $entityB, RelationshipMetadata $relationship, array &$visited)
{
if ($entityB instanceof Collection || $entityB instanceof ArrayCollection) {
foreach ($entityB as $e) {
$aMeta = $this->entityManager->getClassMetadataFor(get_class($entityA));
$bMeta = $this->entityManager->getClassMetadataFor(get_class($entityB));
$type = $relationship->isRelationshipEntity() ? $this->entityManager->getRelationshipEntityMetadata($relationship->getRelationshipEntityClass())->getType() : $relationship->getType();
$hashStr = $aMeta->getIdValue($entityA) . $bMeta->getIdValue($entityB) . $type . $relationship->getDirection();
$hash = md5($hashStr);
if (!array_key_exists($hash, $this->relationshipsScheduledForCreated)) {
$this->relationshipsScheduledForCreated[] = [$entityA, $relationship, $e, $relationship->getPropertyName()];
}
$this->doPersist($e, $visited);
}
return;
}
$this->doPersist($entityB, $visited);
$this->relationshipsScheduledForCreated[] = [$entityA, $relationship, $entityB, $relationship->getPropertyName()];
}