Everyman Neo4J结果与路径

时间:2016-05-30 17:47:40

标签: php neo4j

我正在使用Everyman类连接到neo4j数据库

我正在尝试创建一个泛型函数parseResult,它对结果集对象(每个人neo4j)进行操作,并返回每个行属性的数组。当执行普通的cypher并迭代其结果集时,我发现了 结果集的每一行都是Node类型,我可以通过getProperties()获取其所有属性。但是当我运行cypher时,它涉及路径,例如获取用户的所有连接节点 密码有点像这样:

MATCH(n:User{Uid:$uid}) -[r *1..2]-(m) RETURN m,r

在这种情况下,一些项目是Row类型(通常包含有关关系或路径的信息)因此我不能在它们上调用getProperties(),因此给我一个致命的错误。 我想将parseResult函数作为泛型函数,可用于从所有结果类型构造关联数组。

我该怎么办呢。

2 个答案:

答案 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

的更多信息