getProperty('id'), $n->getProperty('text')); } function show_connects($db, $id) { $n = $db->run(sprintf('MATCH (n:V) WHERE n.id = %d RETURN n', $id))[0]['n']; echo sprintf("Node %s is connected to:\r\n", nstring($n)); foreach($db->run(sprintf('MATCH (V { id: %d })--(n) RETURN n', $id)) as $r) { $nc = $r['n']; echo sprintf(" Node %s\r\n", nstring($nc)); } } function walk($db, $id) { $n = $db->run(sprintf('MATCH (n:V) WHERE n.id = %d RETURN n', $id))[0]['n']; echo 'Walk: '; echo nstring($n); $lastnc = null; foreach($db->run(sprintf('MATCH (V { id: %d })-[:E*1..10]->(n) RETURN n', $id)) as $r) { $nc = $r['n']; if($nc == $lastnc) continue; // this seems necessary to avoid an occasionally repeat - I don't know why $lastnc = $nc; echo ' -> '; echo nstring($nc); } echo "\r\n"; } function find_way($db, $idfrom, $idto) { echo 'Find: '; $p = $db->run(sprintf('MATCH (n1:V { id: %d }),(n2:V { id: %d }), p = shortestPath((n1)-[*1..10]->(n2)) RETURN p', $idfrom, $idto))[0]['p']; $first = true; foreach($p->getNodes() as $n) { if($first) { $first = false; } else { echo ' -> '; } echo nstring($n); } echo "\r\n"; } use Laudis\Neo4j\ClientBuilder; // open $db = ClientBuilder::create()->withDriver('default', 'bolt://neo4j:hemmeligt@192.168.60.129')->build(); $db->run("MATCH (n:V) DETACH DELETE n"); // put $db->run("CREATE (n:V { id:1, text:'This is 1'})"); $db->run("CREATE (n:V { id:2, text:'This is 2'})"); $db->run("CREATE (n:V { id:3, text:'This is 3'})"); $db->run("CREATE (n:V { id:4, text:'This is 4'})"); $db->run("CREATE (n:V { id:5, text:'This is 5'})"); $db->run("CREATE (n:V { id:6, text:'This is 6'})"); $db->run("MATCH (n1:V),(n2:V) WHERE n1.id=1 AND n2.id=2 CREATE (n1)-[e:E]->(n2)"); $db->run("MATCH (n1:V),(n2:V) WHERE n1.id=2 AND n2.id=3 CREATE (n1)-[e:E]->(n2)"); $db->run("MATCH (n1:V),(n2:V) WHERE n1.id=2 AND n2.id=4 CREATE (n1)-[e:E]->(n2)"); $db->run("MATCH (n1:V),(n2:V) WHERE n1.id=3 AND n2.id=5 CREATE (n1)-[e:E]->(n2)"); $db->run("MATCH (n1:V),(n2:V) WHERE n1.id=3 AND n2.id=6 CREATE (n1)-[e:E]->(n2)"); $db->run("MATCH (n1:V),(n2:V) WHERE n1.id=5 AND n2.id=6 CREATE (n1)-[e:E]->(n2)"); // query connections show_connects($db, 1); show_connects($db, 2); show_connects($db, 3); show_connects($db, 4); show_connects($db, 5); show_connects($db, 6); # traverse walk($db, 1); walk($db, 2); walk($db, 3); walk($db, 4); walk($db, 5); walk($db, 6); # shortest path find_way($db, 1, 2); find_way($db, 1, 3); find_way($db, 1, 4); find_way($db, 1, 5); find_way($db, 1, 6); ?>