/** * 缓存所有商品分类 * @return mixed */ static function findAllCache() { //开发期间不缓存,直接返回所有分类 return $goodsCate = self::select('*')->orderBy('pid', 'ASC')->orderBy('sort', 'ASC')->get()->toArray(); /* if(Cache::has('goods_cate')){ $goodsCate = Cache::get('goods_cate'); }else{ $goodsCate = self::select('*')->orderBy('pid', 'ASC')->orderBy('sort', 'ASC')->get()->toArray(); Cache::put('goods_cate',$goodsCate,1*24); } return $goodsCate;*/ } /** * 所有分类=>树形数组 * 将查询到的所有分类转换成树形返回 * @param array $cate 所有分类,可以使用findAllCache() 查询 * @param int $pid 初始父级 * @return mixed */ static function getTree(array $cate,$pid=0){ $result = array(); foreach($cate as $v){ if($v['pid'] == $pid){ $v['children'] =self::getTree($cate,$v['id']); $result[] = $v; } } return $result; } /** * 一维数组=>树形带option数组 * 返回options递归信息 * @param array $data 全部分类 * @param int $pid * @param int $level * @return string */ static function getTreeOption($data,$pid = 0,$level=0){ $result = ''; $j=0; foreach($data as $v){ if($v['pid'] == $pid){ $delimit=''; if($level){ for($i=1;$i<=$level;$i++){ $delimit .= ' '; } } else { $delimit = ''; } $result .= '<option value="'.$v['id'].'">'.$delimit.$v['title'].'</option>'; $result .= self::getTreeOption($data,$v['id'],$level+1); } } return $result; } /** * 所有分类=>顶级分类 * 将查询到的所有分类转换成顶级一维html option返回 * @param array $data 所有分类 * @param int $pid 初始父级 * @return mixed */ static function getParentHtml($data,$pid = 0,$level=0,$delimit = ''){ $result = array(); foreach($data as $v){ if($v['pid'] == $pid){ if($level){ for($i=1;$i<=$level;$i++){ $delimit .= ' '; } } else { $delimit = ''; } $result[] = '<option value="'.$v['id'].'">'.$delimit.$v['title'].'</option>'; $res = self::getTreeOption($data,$v['id'],$level+1); if(is_array($res)){ foreach($res as $v2){ $result[] = $v2; } } } } return $result; }