//连接节点表
$nodesObj = M("nodes");
$nextNodeIds = $nodesObj->where($map)->getField("id",true);//根据条件查询,获取初始水厂节点
//连接节点关系表
$nodeRelationObj = M("node_relation");
$relations = array();
$innerRelation = array();
foreach ($nextNodeIds as $nextNodeId) {
$this->getNodeRelation($relations,$innerRelation,$nodeRelationObj,$nextNodeId);
}
// 获取地区所有节点关系
// $nodeRelationObj:node_relation表连接
// $nextNodeIds: 初始化水源地Id
public function getNodeRelation(&$relations,$innerRelation,$nodeRelationObj,$nextNodeId)
{
$currentNodeId = $nextNodeId;//获取当前水源地id
array_push($innerRelation,$currentNodeId);
$nextNodeIds = $nodeRelationObj->where("currentNode=%d",$currentNodeId)->getField("nextnode",true);//获取下个节点id
if ($nextNodeIds == '' || $nextNodeIds == null) {
array_push($relations,$innerRelation);
}
else {
foreach ($nextNodeIds as $nextNodeId) {
$this->getNodeRelation($relations,$innerRelation,$nodeRelationObj,$nextNodeId);
}
}
}
结果
[[“1”,”2”,”3”,”4”],[“1”,”2”,”3”,”7”],[“1”,”2”,”5”,”4”],[“1”,”2”,”5”,”6”]]
数据库: