【问题标题】:How to get child under sub-category and sub-category user category in JSON Laravel如何在 JSON Laravel 中获取子类别和子类别用户类别下的孩子
【发布时间】:2020-01-03 11:34:01
【问题描述】:

这是一个非常常见的问题,但我无法使用 JSON 格式的 API。我在一个表 Category 中存储了三层 Category。类别->子类别->子项。 我想在 API 中以 Format 格式获取它。

类似的东西。

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;

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

数据库的样子

【问题讨论】:

    标签: php arrays loops laravel-5


    【解决方案1】:

    你可以这样做。

     $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;
                        //children of subcat 
                        $children = Category::where('status', 1)->where('parent_id', '=', $subcat->id)->get();  
                        $child = array();
                        if($children){
                            foreach($children as $k1=>$val){
                                 $child[$val->id] = $val->name;
                                 $allData[$key]['subcategory'][$subcat->id]['child'] = $child;
                            }
                        }
    
                    }
                    // set subcategory array
                    $allData[$key]['subcategory'] = $subCat;
            }
           return $allData;
    

    请尝试这种方式。将您的 json 转换为数组并使用它来获取子值

    $ar = json_decode($data,true);
    foreach($ar as $value){
        echo $value['parent'].'<br>';
        foreach($value['child'] as $child){
    
           echo '&nbsp;'.$child.'<br>';
       }
     }
    

    这会输出这个

    test
     A
     B
     C
     D
     E
    test1
     G
     H
     I
     J
     K
    

    【讨论】:

    • 感谢您的回答,但我也想要子类别的孩子
    • 你当前的数组是什么样子的?
    • 在问题中我提到了当前结果的图像。
    • 您只添加了父子类,父类是类别,子类是子子类别。子类别在哪里?
    • 是的,我想要一个孩子,这是我关于如何获得子类别的孩子的问题
    【解决方案2】:

    终于解决了这个问题

           $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;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-14
      • 2019-01-17
      • 2021-08-28
      • 2023-03-17
      • 1970-01-01
      • 2017-09-05
      • 2021-12-21
      • 2012-10-14
      相关资源
      最近更新 更多