2017-04-21 57 views
0

輸出我想在這裏找到執行排序的例子的Neo4j代碼: http://neo4j.com/docs/developer-manual/current/cypher/clauses/create/#create-create-a-full-path但我似乎失去了一些東西明顯。我需要創造的是(A)有(B)。沒有從Neo4j的查詢

$n4 = 'curl -H "Accept: application/json; charset=UTF-8" -s -u user:pass -H "Content-Type: application/json" -X POST http://localhost:7474/db/data/cypher -d \'%s\''; 

function basicQuery($query){ 
global $n4; 

    $str = '{"query" : "'.$query.'","params" : {}}'; 

    return sprintf($n4,$str); 
} 

$A = array('Label'=>'Attributes'); 

$B = array('Label'=>'Attributes'); 

$query = 'CREATE p =(A '.json_encode($A).')-[:HAS]->(B '.json_encode($B).') RETURN p'; 

echo shell_exec(basicQuery($query)); 

但我沒有得到任何輸出,當我運行: shell_exec(basicQuery('MATCH (A) RETURN DISTINCT count(A) AS tally'));

我得到的0理貨我很新的Neo4j所以請有人可以告訴我,我什麼做錯了?

回答

0

確定這裏的問題似乎是捲曲。通過使用我的查詢中的佔位符,如A {Name:{Placeholder}}這似乎產生輸出。解決這類問題的解決方案似乎是將輸出複製到命令行中,並在PHP中進行嘗試。

0

1)不能使用引號周圍的屬性鍵名稱

2)您需要正確編碼查詢

$n4 = 'curl -H "Accept: application/json; charset=UTF-8" -s -u user:pass -H "Content-Type: application/json" -X POST http://localhost:7474/db/data/cypher -d \'%s\''; 

function basicQuery($query){ 
    global $n4; 
    $json = array(
     "query" => $query, 
     "params" => new stdClass 
    ); 
    $str = json_encode($json); 
    return sprintf($n4, $str); 
} 

function objToMap($obj) { 
    $tmp = []; 
    foreach($obj as $key=>$value) { 
    $tmp[] = '`' . $key . '`: ' . json_encode($value); 
    } 
    return '{' . join(',', $tmp) . '}'; 
} 

$A = array('Label'=>'Attributes'); 
$B = array('Label'=>'Attributes'); 

$query = 'CREATE p =(A:TEST ' .objToMap($A).')-[:HAS]->(B:TEST '.objToMap($B).') RETURN p'; 
echo shell_exec(basicQuery($query));