我正在使用Everyman类连接到neo4j数据库
我正在尝试创建一个泛型函数parseResult,它对结果集对象(每个人neo4j)进行操作,并返回每个行属性的数组。当执行普通的cypher并迭代其结果集时,我发现了 结果集的每一行都是Node类型,我可以通过getProperties()获取其所有属性。但是当我运行cypher时,它涉及路径,例如获取用户的所有连接节点 密码有点像这样:
MATCH(n:User{Uid:$uid}) -[r *1..2]-(m) RETURN m,r
在这种情况下,一些项目是Row类型(通常包含有关关系或路径的信息)因此我不能在它们上调用getProperties(),因此给我一个致命的错误。 我想将parseResult函数作为泛型函数,可用于从所有结果类型构造关联数组。
我该怎么办呢。
答案 0 :(得分:0)
您可以转换对象的inft数组,使用:
function object_to_array($object)
{
if (is_array($object) || is_object($object))
{
$result = array();
foreach ($object as $key => $value)
{
$result[$key] = object_to_array($value);
}
return $result;
}
return $object;
}
答案 1 :(得分:0)
你有没有考虑升级到Neo4j的更新驱动程序?
https://github.com/graphaware/neo4j-php-client
使用neo4j-php-client运行相同的查询为您提供了Path对象的可用性,驱动程序也提供了来自neo4j的最新3.0功能
MATCH p=(n:User {Uid:$uid} ) -[r *1..2]-(m) RETURN p
您可以从路径返回节点或关系:
$query = 'MATCH p=(n:User {Uid:$uid} ) -[r *1..2]-(m) RETURN p';
$result = $client->run($query);
foreach ($result->records() as $record) {
$path = $record->get('p');
// only nodes
$nodes = $path->nodes();
// only rels
// $rels = $path->relationships();
}
有关路径here
的更多信息