首页 > 解决方案 > 如何在 JSON Laravel 中获取子类别和子类别用户类别下的孩子

问题描述

这是一个非常常见的问题,但我无法以 JSON 格式为 API 制作它。我是一个表类别,其中存储了三层类别。类别->子类别->子项。我想在 API 格式中得到这个。

就像是。

Category

  sub-category-1
  sub-category-2 
      child-2-1
      child-2-2
  sub-category-3

我尝试使用代码

  $allData = array();
            // get all parent category 
            $categories = Category::where(['status' => 1, 'parent_id' => 0])->get();        
            foreach ($categories as $key=>$sub) {
                    // now take one by one it's child category 
                    $allData[$key]['parent'] = $sub->name;
                    $subCategory = Category::where('status', 1)->where('parent_id', '=', $sub->id)->get();
                    $subCat = array();
                    // set parent category title
                    foreach ($subCategory as $k=>$subcat) {
                        $subCat[$subcat->id] = $subcat->name;

                    }
                    // set subcategory array
                    $allData[$key]['subcategory'] = $subCat;
            }
           return $allData;

我得到了这个结果不是我不知道如何获得孩子的价值

在此处输入图像描述

数据库看起来像

在此处输入图像描述

标签: phparraysloopslaravel-5

解决方案


最后,我解决了这个

       $parents = Category::where('parent_id', 0)->where('status', 1)->orderBy('sort_order', 'asc')->get();
        foreach ($parents as $parent) {
            $childs = Category::where('parent_id', $parent->id)->where('status', 1)->orderBy('sort_order', 'asc')->get();
            if (count($childs) > 0) {
                $subCat = array();
                $players = array();
                $roster[$parent->name] = $players;
                        foreach ($childs as $i => $child) {
                            $subchilds = Category::where('parent_id', $child->id)->where('status', 1)->orderBy('sort_order', 'asc')->get();
                            if (count($subchilds) > 0) {

                                $roster[$parent->name][$child->name] = $subCat;
                                foreach ($subchilds as $subchild) {

                                    $roster[$parent->name][$child->name][$subchild->id] = $subchild->name;
                                }

                            }else{
                                $roster[$parent->name][$child->name] = $players;
                            }
                        }

            }
        }
        return $roster;

在此处输入图像描述


推荐阅读