/** * Find the nodes related to the relationship * * @param Property $property * @param array $info * * @return object */ protected function getRelationshipNode(Property $property, array $info) { $nodeClass = $this->map->getClass($property->getOption('node')); foreach ($this->entities as $entity) { if (!$entity instanceof $nodeClass) { continue; } $nodeInfo = $this->entities->getInfo($entity); if ($nodeInfo['realId'] === $info[$property->getType()]) { return $entity; } } $query = new Query(sprintf('MATCH (n:%s) WHERE id(n) = {where}.id RETURN n;', $nodeClass)); $query->addVariable('n', $nodeClass); $query->addParameters('where', ['id' => $info[$property->getType()]]); return $this->uow->execute($query)->current(); }
/** * Extract variables and parameters from the expression to inject them into the query * * @param Query $query * @param ExpressionInterface $expression * * @return void */ protected function extractData(Query $query, ExpressionInterface $expression) { if ($expression instanceof ParametrableExpressionInterface && $expression->hasParameters()) { $query->addParameters($expression->getParametersKey(), $expression->getParameters(), $expression->getReferences()); } if ($expression instanceof VariableAwareInterface && $expression->hasVariable() && $expression->hasAlias()) { $query->addVariable($expression->getVariable(), $expression->getAlias()); } }