2015-08-14 5 views
1

Для этого я использовал следующий код:Экспорт файла JSON из базы данных Neo4j с использованием PHP

$result = $client->sendCypherQuery('MATCH (n) RETURN n')->getResult(); 
$nodes = []; 
foreach ($result->getNodes() as $node) { 
    $nodes[] = [ 
     'id' => $node->getId(), 
     'labels' => $node->getLabels(), 
     'properties' => $node->getProperties() 
    ]; 
} 

var_dump(json_encode($nodes)); 

Но я получаю следующее сообщение об ошибке:

Фатальная ошибка: Вызов функции-члена getNodes() на не объект в C: \ wamp \ www \ PhpProjectNeo4j1 \ index.php

ответ

0

Вы пытаетесь вызвать функцию на объекте, который пуст или не существует. Сначала напечатайте результат возвращаемого запроса.

Вероятно, запрос не возвращает никакого результата, но сначала вам нужно подключиться к базе данных Neo4j:

Вот пример того, как вы можете это сделать:

https://github.com/neo4j-examples/movies-php-neoclient/blob/fe5fd9222945ca8e9efc4ab3cac6b743f2ff8b24/index.php

$client = ClientBuilder::create() 
    ->addConnection('default', $cnx['scheme'], $cnx['host'], $cnx['port'], true, $cnx['user'], $cnx['pass']) 
    ->setAutoFormatResponse(true) 
    ->setDefaultTimeout(20) 
    ->build(); 

$result = $client->sendCypherQuery('MATCH (n) RETURN n')->getResult(); 
var_dump($result);  

Общим способом является проверка пустоты возвращаемого результата перед пересечением массива.

if (!empty($result)) { 
    foreach ($result->getNodes() as $node) { 
     $nodes[] = [ 
      'id' => $node->getId(), 
      'labels' => $node->getLabels(), 
      'properties' => $node->getProperties() 
     ]; 
    } 
} 
+0

Да, вы правы. var_dump ($ результат); -> retrurn null, но когда я запускаю MATCH (n) RETURN n в консоли Neo4j, он не равен null. Он вернул график –

+0

Сначала вам нужно подключиться к базе данных neo4j. См. Мой отредактированный ответ. –

+0

Теперь все в порядке. для Edges я использовал этот код: foreach ($ result-> getRelationships() as $ rel) { \t $ edge [] = [ 'source' => $ nodesPositions [$ rel-> getStartNode() -> getId()], 'target' => $ nodesPositions [$ rel-> getEndNode() -> getId()] ]; } \t \t \t var_dump (json_encode ($ edge)); Но он возвратил строку '[]' –

Смежные вопросы