分类查询聚合

模糊查询分页

//查询数据通过分类名
    public function byCateGet()
    {
        if ($this->is_token()!==1){
            return $this->is_token();
        }
        $search=input('search');
        if(input('category_title')){
            $category_id = Db::table('project_category')
                ->where('category_title',input('category_title'))
                ->value('id');
            if ($category_id==NULL){
                return json_encode(['code'=>400,'msg'=>'该类型不存在']);
            }
            $data = Db::name($this->tableName)->where('category_id', $category_id)
                ->where('keyword|title','like','%' . $search . '%')
                ->select();
            return json_encode($data);
        }
        $data = Db::name($this->tableName)->where('keyword|title','like','%' . $search . '%')
            ->select();
        return json_encode($data);
    }

子集查询
查询效果
在这里插入图片描述
代码实现

//查询所有分类
  public function category_list()
    {
        $webData = new WebData();
        $webData->header();
        $status = $_SERVER['REQUEST_METHOD'];
        if ($status != 'OPTIONS') {
            $token = $_SERVER['HTTP_TOKEN'];
            $is_token = $webData->is_token($token);
            if ($is_token == 1) {
                $category = db::name($this->categoryTable)
                    ->order('sort asc')
                    ->select();
                $listData = db::name($this->listTable)
                    ->order('is_top desc')
                    ->select();
                $category_item = [];
                $list_item = [];
                foreach ($category as $item) {
                    $category_item[$item['id']] = $item;
                }
                foreach ($listData as $item) {
                    $list_item[$item['id']] = $item;
                }
                foreach ($category_item as $item) {
                    $category_item[$item['pid']]['children'][] = &$category_item[$item['id']];
                }
                foreach ($list_item as $item) {
                    $category_item[$item['category_id']]['children'][] = &$list_item[$item['id']];
                }
                $a = [];
                foreach ($category_item as $item) {
                    if (isset($item['id'])) {
                        if ($item['pid'] == 0) {
                            $a[] = $item;
                        }
                    }
                }
                return json_encode($a);
            } else {
                return json_encode($webData->getTokenError($token));
            }
        }

    }
    

代码逻辑
初始化空数组 $category_item 和 $list_item。

使用两个循环遍历分类数据和列表数据,并将每个数据项以其 id 作为键存储到 $category_item 和 $list_item 数组中。

使用遍历循环将分类数据按照父子关系组织起来。首先,遍历 $category_item 数组,对于每个分类数据项,将其存储到其父分类的 children 数组中。这样可以将具有父子关系的分类数据组织在一起。

使用遍历循环将列表数据与所属的分类数据关联起来。遍历 $list_item 数组,对于每个列表数据项,将其存储到对应的分类数据的 children 数组中。

初始化空数组 $a。

再次遍历 $category_item 数组,对于每个分类数据项,判断其是否存在 id 字段,并且其父分类的 pid 为 0。如果满足条件,将该分类数据项存储到 $a 数组中。

使用 json_encode 方法将 $a 数组转换为 JSON 格式的字符串,并将其作为结果返回。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值