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 //返回数组
    }

发表回复

您的电子邮箱地址不会被公开。