thinkphp递归查询所有子级
ThinkPHP分类相关查询(获取所有子分类,获取父分类,下一级分类等)。
像这种方法getCateKv()返回数组形式,键为分类ID,值为分类名的,很好做面包屑导航。
//获取指定分类的所有子分类ID号 function getAllChildcateIds($categoryID) { //初始化ID数组 $array[] = $categoryID; do { $ids = ''; $where['pid'] = array('in',$categoryID); $cate = M('cate')->where($where)->select(); foreach ($cate as $k=>$v) { $array[] = $v['id']; $ids .= ',' . $v['id']; } $ids = substr($ids, 1, strlen($ids)); $categoryID = $ids; } while (!empty($cate)); $ids = implode(',', $array); return $ids; // 返回字符串 //return $array //返回数组 } //获取指定分类所有父ID号 function getAllFcateIds($categoryID) { //初始化ID数组 $array[] = $categoryID; do { $ids = ''; $where['id'] = array('in',$categoryID); $cate = M('cate')->where($where)->select(); echo M('cate')->_sql(); foreach ($cate as $v) { $array[] = $v['pid']; $ids .= ',' . $v['pid']; } $ids = substr($ids, 1, strlen($ids)); $categoryID = $ids; } while (!empty($cate)); $ids = implode(',', $array); return $ids; // 返回字符串 //return $array //返回数组 } //获取指定分类的所有子分类 键为ID,值为分类名 function getCateKv($categoryID) { //初始化ID数组,赋值当前分类 $array[] = M('cate')->where("id={$categoryID}")->getField("cateName"); do { $ids = ''; $where['pid'] = array('in',$categoryID); $cate = M('cate')->where($where)->select(); echo M('cate')->_sql(); foreach ($cate as $k=>$v) { $array[$v['id']] = $v['cateName']; $ids .= ',' . $v['id']; } $ids = substr($ids, 1, strlen($ids)); $categoryID = $ids; } while (!empty($cate)); $ids = implode(',', $array); //return $ids; // 返回字符串 return $array //返回数组 }