GraphAware\Neo4j\OGM\Persister\RelationshipEntityPersister::getCreateQuery PHP Method

getCreateQuery() public method

public getCreateQuery ( $entity, $pov )
    public function getCreateQuery($entity, $pov)
    {
        $class = ClassUtils::getFullClassName(get_class($entity), $pov);
        $relationshipEntityMetadata = $this->em->getRelationshipEntityMetadata($class);
        $startNode = $relationshipEntityMetadata->getStartNodeValue($entity);
        $startNodeId = $this->em->getClassMetadataFor(get_class($startNode))->getIdValue($startNode);
        $endNode = $relationshipEntityMetadata->getEndNodeValue($entity);
        $endNodeId = $this->em->getClassMetadataFor(get_class($endNode))->getIdValue($endNode);
        $relType = $this->classMetadata->getType();
        $parameters = ['a' => $startNodeId, 'b' => $endNodeId, 'fields' => []];
        foreach ($this->classMetadata->getPropertiesMetadata() as $propertyMetadata) {
            $v = $propertyMetadata->getValue($entity);
            $parameters['fields'][$propertyMetadata->getPropertyName()] = $v;
        }
        $query = 'MATCH (a), (b) WHERE id(a) = {a} AND id(b) = {b}' . PHP_EOL;
        $query .= sprintf('CREATE (a)-[r:%s]->(b)', $relType) . PHP_EOL;
        if (!empty($parameters['fields'])) {
            $query .= 'SET r += {fields} ';
        }
        $query .= 'RETURN id(r) as id';
        return Statement::create($query, $parameters);
    }