neo4jphp将ToT()转换为getResultSet()对象

时间:2014-05-16 15:39:19

标签: neo4jphp

我使用的是Neo4jphp REST API,我遇到了将我的代码中创建的节点iv与从neo4j数据库中检索的节点相关联的问题。 我按如下方式检索节点

$querystring="MATCH(n)"."WHERE has (n.name) and n.name='Interests'"."RETURN n"; $query=new Everyman\Neo4j\Cypher\Query($client,$querystring); $result=$query->getResultSet();

使用createNode()在我的代码中创建另一个节点 $friend=$client->makeNode()->setProperty('name',$fname)->save(); 我使用了relatedTo()来关联它们

$m=$client->getNode($result);
$m->relateTo($friend,$movi)->save();//$movi is a common movie name

但是收到此错误

PHP Catchable fatal error:  Object of class Everyman\\Neo4j\\Query\\ResultSet could not be converted to string in /var/www/vendor/everyman/neo4jphp/lib/Everyman/Neo4j/Cache/EntityCache.php 

非常感谢任何输入

2 个答案:

答案 0 :(得分:2)

neo4jphp查询返回一个行对象(即使只有一个响应),所以

$m=$client->getNode($result);

不起作用

试试这个

$querystring="MATCH(n) WHERE has (n.name) and n.name='Interests' RETURN n";
$query=new Everyman\Neo4j\Cypher\Query($client,$querystring);
$result=$query->getResultSet();
foreach($result as $resultItem)
{
   $resultArray[] = $resultItem['x'];
   //$resultItem['x'] is the node object, now $result array is an array of node objects
}
$friend= $client->makeNode()->setProperty('name',$fname)->save();
$resultArray[0]->relateTo($friend,$movi)->save();

此代码也适用于此查询(更易于阅读)

$querystring="MATCH (n {name:"Interests"}) RETURN n";

答案 1 :(得分:0)

我会这样做:

$queryString = "MATCH(n) WHERE has (n.name) and n.name= {name} RETURN ID(n)";
$query = new Everyman\Neo4j\Cypher\Query($client,$queryString,array('name'=>'Interests'));

$result = $query->getResultSet();

$resultArray=array();
foreach($result as $row)
{
    array_push($resultArray,$row['n']);
}

$friend = $client->getNode($resultArray[0]);
$friend->relateTo($friend,$movi)-save();