1

我有一个 php 数组$id=[12344,546674,6789];

我想将此数组设置为id关系属性的值:knows,表示为

(:user)-[:knows{id:[]}]->(:data)

我为neo4j 使用everyman php 插件

我试过下面的查询,但它给出了一个错误Array cannot be converted to string

    $id=[12344,546674,6789];
    $client = new Everyman\Neo4j\Client();
    $query= "match (u:user{id:".$user_id."})-[r:knows]->(c:data)
             set r.id=".$id."";
    $result = new Everyman\Neo4j\Cypher\Query($client, $query);

请帮助,在此先感谢

4

2 回答 2

1

最后我找到了解决方案,

我发布这个答案是为了帮助其他有同样疑问的人。

您可以像这样使用它,而不是直接在密码查询中指定数组

$id=[12344,546674,6789];
$client = new Everyman\Neo4j\Client();
$query= "match (u:user{id:".$user_id."})-[r:knows]->(c:data)
         set r.id={myid}";
$result = new Everyman\Neo4j\Cypher\Query($client, $query,array('myid' => $id));

希望这会有所帮助,谢谢

于 2014-02-24T07:40:10.707 回答
0
set r.id=".$id."";

错误的!您不能将数组转换为字符串!这是php错误,而不是neo4j

在密码数组表示为 [1,2,3] 查询应该看起来像

 $query= "match (u:user{id:".$user_id."})-[r:knows]->(c:data)
             set r.id=[" . implode(',', $id) . "]";

使用语句参数更好,但我不知道确切的语法。应该是这样的:

$params = array( 'id' => $id');
$query= "match (u:user{id:".$user_id."})-[r:knows]->(c:data)
             set r.id= {id} ";
    $result = new Everyman\Neo4j\Cypher\Query($client, $query, $params);
于 2014-02-24T07:41:10.120 回答