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);
}