/**
* 产品分类
* @param Request $request
*/
public function leftMenu()
{
$product_cate_list = db('cates')->field('id,pid,cate_name,path')->select();
$product_cate_list = generateTree($product_cate_list, $pk = 'id', $pid = 'pid',$child = 'subcate');
$product_cate_list = $this->product_count($product_cate_list);
//未分类
$not_classified = db('optional_product')
->where('cate_id',null)
->count();
array_unshift($product_cate_list,[
'id' => -1,
'pid' => 0,
'cate_name' => '未分类('.$not_classified.')'
]);
array_unshift($product_cate_list,[
'id' => 0,
'pid' => 0,
'cate_name' => '全部('.(db('optional_product')->count()).')'
]);
$this->return_msg('200','成功',$product_cate_list);
}
protected function product_count(&$arr)
{
foreach ($arr as $key => &$value){
$arr[$key]['img_count'] = db('optional_product')
->where('cate_path', 'like', '%|' . $value['id'] . '|%')
->count();
$arr[$key]['cate_name'] = $value['cate_name'] . '('.$arr[$key]['img_count'].')';
if(isset($value['subcate'])){
$this->product_count($value['subcate']);
}
}
return $arr;
}
/**
* 多层分类树状图
* @param $list 原始数组
* @param string $pk 当前分类id
* @param string $pid 父类id
* @param string $child 子类键名
* @param int $root 顶级分类
* @return array 多级结构数组
*/
function generateTree($list, $pk = 'id', $pid = 'parent_id', $child = 'children', $root = 0)
{
$tree = array();
$packData = array();
foreach ($list as $data) {
$packData[$data[$pk]] = $data;
}
foreach ($packData as $key => $val) {
if ($val[$pid] == $root) {
$tree[] = &$packData[$key];
} else {
$packData[$val[$pid]][$child][] = &$packData[$key];
}
}
return $tree;
}
多级分类查询计算数量查询低于1秒
最新推荐文章于 2024-03-31 23:49:44 发布
本文探讨如何优化多级分类的查询计算,确保在1秒内完成数量查询,提高系统的响应速度。
摘要由CSDN通过智能技术生成