递归取所有子类
/**
* 通过ID 获得子节点信息
* @param $cateid
* @return array
*/
public function getchilrenid($cateid){
$cateres=$this->select();
return $this->_getchilrenid($cateres,$cateid);
}
/**
* 递归方法
* @param $cateres
* @param $cateid
* @return array
*/
public function _getchilrenid($cateres,$cateid){
static $arr=array();
foreach ($cateres as $k => $v) {
if($v['pid'] == $cateid){
$arr[]=$v['id'];
$this->_getchilrenid($cateres,$v['id']);
}
}
return $arr;
}
/**
* 取子栏目
* @param {Object} $category_id
*/
public function getSubCategories ($cid)
{
$ids_str = '';
if(is_array($cid)) {
$ids_str = implode(',', $cid);
}
else {
$ids_str = $cid;
}
$ids = $this->where('pid', 'IN', $ids_str)->column('id');
if($ids){
$idsStr = self::getSubCategories($ids);
$ids_str .= ','.$idsStr;
}
return $ids_str;
}
/**
* 取上级父栏目,第一个元素为根;
* @param array()
*
*return array parents
*/
public function get_parents($pid)
{
static $parents = [];
$cat = $this->get($pid);
$parents[] = $cat;
if($cat['pid']){
$this->get_parents($cat['pid']);
}
krsort($parents);
return array_values($parents);
}