지금까지 Cypher 쿼리로 요청을 보내고 응답을 다시 받기 위해 PHP Rest API를 사용하고있었습니다. 응답은 구문 분석하기가 어렵고 JSON으로 변환 할 수없는 거대한 문자열입니다. 이제 Neo4jPHP가 설치되었으며 사이퍼에 있던 동일한 쿼리를 작성하는 방법을 알아 내려고합니다. 이 내 쿼리입니다 :neo4jPHP를 사용하여 두 노드 사이의 모든 노드 이름을 얻는 방법
이 MATCH (n:RealNode)-[r:contains*]-(z) WHERE n.gid='123' RETURN n,z;")
내가 실제로 원하는 것은 내 n 개의 노드와 관련이있는 모든 노드 이름 (이름은 각 노드 내부의 재산)의 목록을 얻는 것입니다. 어떻게해야합니까?
온라인에서 Neo4jPHP onnline에 대한 많은 예제를 찾을 수 없으며 작동하지 않는 것으로 보입니다. 여기에서 최신 버전을 다운로드했습니다 (https://github.com/jadell/neo4jphp).
감사 D.
RE 편집 한 내가 neo4j 서버에서이 쿼리를 시도
:
MATCH (n)-[r:KNOWS*]-(z) WHERE n.name='Arthur Dent' AND z.name='Ford Prefect' RETURN n,z,r;
과 내가 서로 연결되어있는 모든 3 개 노드를 얻을. neo4jPHP를 통한 동일한 쿼리는 하나의 노드 이름 만 반환합니다. 왜 이런 일이 일어나는 걸까요? 당신은 여기 path
, 패턴에 변수를 할당
MATCH path=(n {name:'Arthur Dent'])-[:KNOWS*]-(z {name:'Ford Perfect'})
RETURN [x in nodes(path) | x.name] as names
:
$querystring="MATCH path=(n:RealNode {gid:'58731'})-[:contains*]-(z) RETURN [x in nodes(path) | x.id] as names";
$query=new Everyman\Neo4j\Cypher\Query($client,$querystring);
$result=$query->getResultSet();
print_r($result);
foreach($result as $row){
echo $row['x']->getProperty('name') . "\n";
}
감사합니다. 그래서 neo4jPHP를 사용하지 말고 HTTP 요청 (PHP 또는 Python 사용)을 통해 이러한 사이퍼 쿼리를 실행하라고 제안합니까? – user1919
실제로 내 문제는 내가 PHP로 할 때 응답은 내가 원하는 노드의 이름을 얻기 위해 구문 분석 할 수없는 거대한 문자열이라는 것입니다. – user1919
neo4jphp를 사용하여 cypher 쿼리를 보낼 수 있으며 –