Example #1
0
 /**
  * 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;
 }