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