GraphAware\Neo4j\OGM\EntityManager::getResultMappingMetadata PHP Метод

getResultMappingMetadata() публичный Метод

public getResultMappingMetadata ( $class )
    public function getResultMappingMetadata($class)
    {
        if (!array_key_exists($class, $this->resultMappers)) {
            $this->resultMappers[$class] = $this->annotationDriver->readQueryResult($class);
            foreach ($this->resultMappers[$class]->getFields() as $field) {
                if ($field->isEntity()) {
                    $targetFQDN = ClassUtils::getFullClassName($field->getTarget(), $class);
                    $field->setMetadata($this->getClassMetadataFor($targetFQDN));
                }
            }
        }
        return $this->resultMappers[$class];
    }

Usage Example

Пример #1
0
 protected function nativeQuery($query, $parameters, QueryResultMapping $resultMapping)
 {
     $parameters = null !== $parameters ? (array) $parameters : [];
     $result = $this->entityManager->getDatabaseDriver()->run($query, $parameters);
     if ($result->size() < 1) {
         return;
     }
     if ($result->size() > 1 && $resultMapping->getQueryResultType() !== QueryResultMapping::RESULT_MULTIPLE) {
         throw new \RuntimeException(sprintf('Expected a single record, got %d', $result->size()));
     }
     $results = [];
     $mappingMetadata = $this->entityManager->getResultMappingMetadata($resultMapping->getQueryResultClass());
     foreach ($result->records() as $record) {
         $results[] = $this->hydrateQueryRecord($mappingMetadata, $record);
     }
     return $resultMapping->getQueryResultType() === QueryResultMapping::RESULT_SINGLE ? $results[0] : $results;
 }