/** * Take the cypher query and replace all the alias by the real * labels and relationships types, as well as correct nodes id * * @param Query $query * * @return string */ public function buildQuery(Query $query) { $variables = $query->getVariables(); $cypher = $query->getCypher(); foreach ($variables as $variable => $alias) { $class = $this->identityMap->getClass($alias); $metadata = $this->metadataRegistry->getMetadata($class); if ($metadata instanceof NodeMetadata) { $labels = implode(':', $metadata->getLabels()); $search = sprintf('(%s:%s', $variable, $alias); $replace = sprintf('(%s:%s', $variable, $labels); } else { $search = sprintf('[%s:%s', $variable, $alias); $replace = sprintf('[%s:%s', $variable, $metadata->getType()); } $cypher = str_replace($search, $replace, $cypher); } return $cypher; }