ThinkPHP分类相关查询(获取所有子分类,获取父分类,下一级分类等)

//获取指定分类的所有子分类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 //返回数组

}

方法都是通用的,不只在thinkphp框架中能用,只是数据库查询方法不一样。

像这种方法getCateKv()返回数组形式,键为分类ID,值为分类名的,很好做面包屑导航。

今儿写出来也算是温习一遍啦!!

点赞

发表回复

电子邮件地址不会被公开。必填项已用 * 标注