在Neoxygen的NeoClient中完全可行和用戶友好。
確保的第一件事情,就是您激活響應格式化:
$client = ClientBuilder::create()
->setAutoFormatResponse(true)
->addConnection(xxx...)
->build();
其次,關於您的查詢我肯定會設定一個深度限制,以避免內存行爲取決於你的圖形連通性:
MATCH (a:`Category`{category_id:0})-[r:HAS_CHILD*..20]->(b:`Category`)
RETURN b,r
然後,您可以與客戶端發送和受益客戶端將重新映射在一個圖形結構的結果:
$query = 'MATCH (a:`Category`{category_id:{id}})-[r:HAS_CHILD*..20]->(b:`Category`)'
RETURN b,r';
$children = $client->sendCypherQuery($q, ['id'=>0])->getResult()->getNodes();
現在
,每個節點都知道他有什麼樣的關係和關係知道他們的起點和終點的節點,例如:
$children
在第一深度的節點,所以
$rels = $children->getOutboundRelationships();
$nodes = [];
foreach ($rels as $rel) {
$nodes[] = $rel->getEndNode();
}
$節點擁有現在所有深度2的節點。
目前還沒有方法可以直接從節點對象中獲取連接節點,而無需首先獲得關係,也許我可以添加到客戶端。
NeoClient利用了圖形結果數據的內容,所以能夠容易地重新映射在PHP對象樹形結構 –