GraphAware\Neo4j\OGM\UnitOfWork::persistRelationship PHP Method

persistRelationship() public method

public persistRelationship ( $entityA, $entityB, RelationshipMetadata $relationship, array &$visited )
$relationship GraphAware\Neo4j\OGM\Metadata\RelationshipMetadata
$visited array
    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()];
    }