无限级菜单父节点查询所有子节点
程序员文章站
2022-06-03 14:46:48
...
写了一个Thinkphp的节点工具,通过传入一个父id查询旗下的子节点。 ThinkPHP ?phpclass Tree{static public $treeList=array();//存放无限极分类结果static public $childNode=array();//存放父节点和父节点下面的子节点//无限级分类排序public function crea
写了一个Thinkphp的节点工具,通过传入一个父id查询旗下的子节点。 ThinkPHP
$value){ if($value['pid']==$pid){ $value['level'] = $level; self::$treeList[] = $value; unset($data[$key]); self::create($data,$value['id'],$level+1); } } return self::$treeList; } /******************************************************************************/ /** * 根据父节点,查询父节点下面的子节点 * @param int $tid tree表ID */ public function findChild($tid){ self::$childNode[]=(int)$tid; $tree=M('Tree'); $map['id']=array('eq',$tid); $allTree=$tree->field('id,pid')->select(); //查询tree表 self::findArrayNode($tid, $allTree); return self::$childNode;//返回所有节点 } /** * * @param int $id 节点ID * @param array $list tree表所有的id,pid */ public function findArrayNode($id,$list){ foreach ($list as $key => $val){ if ($id==$val['pid']){ self::$childNode[]=(int)$val['id']; self::findArrayNode($val['id'], $list); //递归,传入新节点ID } } } /******************************************************************************/ //根据findChild()的返回结果,组装sql语句,用于查询news表 public function createSql($arr=array()){ $sql=""; foreach ($arr as $key => $val){ $sql.="tid=$val or "; } $sql=trim($sql); //清除空格 $sql=trim($sql,'or'); //清除最后的or $sql=trim($sql); //清除空格 return $sql; } /******************************************************************************/ /** * 根据tid,获取where的sql * @param int $tid */ public function getSql($tid){ return self::createSql(self::findChild($tid)); } } /* 用法 import('ORG.Util.Tree'); $list=Tree::create($data); 排序前的数据结构 id pid 1 0 2 0 3 1 4 3 排序后的数据结构 id pid level 1 0 1 3 1 2 4 3 3 2 0 1 */ ?>
推荐阅读
-
bootstrap插件treeview实现全选父节点下所有子节点和反选功能
-
Thinkphp的list_to_tree 实现无限级分类列出所有节点
-
js 树形结构数据 已知某一子节点 一次向上获取所有父节点
-
sql server递归子节点、父节点sql查询表结构的实例
-
mysql 树表查询所有子节点
-
mysql 递归查找菜单节点的所有子节点的方法
-
oracel中递归查询父节点或者子节点start with connect by prior用法实例
-
MySQL递归查询树状表的子节点、父节点_MySQL
-
Thinkphp框架使用list_to_tree 实现无限级分类列出所有节点示例
-
数据表查询所有子/父节点