簡體   English   中英

重新排列angularjs中的JSON對象以創建嵌套的ul

[英]Rearrange a JSON object in angularjs to create a nested ul

嗨,我有一個RESTfulAPI,它返回這樣的JSON對象:

{
data: [
       {
        id: 4,
        name: "Naranja",
        cant_portion: 2,
        portion_name: "Piezas",
        foodgroup_name: "Frutas"
        }
      ]
}

我想重新排列它,這樣我可以有這樣的東西:

{
data: [
       {
        foodgroup_name: "Frutas",
        items:[
               {
               portion_name: "Piezas",
               items:[
                      {
                      id: 4,
                      name: "Naranja",
                      cant_portion: 2,
                      }
                     ]
               }
              ]            
        }
      ]
}

這樣做的想法是,我想擁有一個嵌套的ul,第一個ul應該給我食物組的名稱,然后下一個ul應該給出食物組具有的部分的類型,並在該ul內放一些li,符合這兩個要求的項目。

現在,在我的API中,我可以返回每個食物組的名稱,因此我對第一個ul沒問題,但是在第二個部分中,每個食物組都沒有所有的部分,也許只有1或2。

核實:

private function _rearrangeData($data = array())
{
    $out = array();
    if (!count($data)) {
        return $data;
    }
    $foodgroup = array();
    $portion = array();
    $foodgroup_name = $data[0]['foodgroup_name'];
    $portion_name = $data[0]['portion_name'];
    foreach ($data as $item) {
        if ($item['foodgroup_name'] == $foodgroup_name) {
            if ($item['portion_name'] == $portion_name) {
                unset($item['foodgroup_name']);
                unset($item['portion_name']);
                array_push($portion, $item);
            } else {
                $arr = [
                    'portion_name' => $portion_name,
                    'items' => $portion
                ];
                $portion_name = $item['portion_name'];
                unset($item['foodgroup_name']);
                unset($item['portion_name']);
                $portion = [$item];
                array_push($foodgroup, $arr);
            }
        } else {
            $arr = [
                'portion_name' => $portion_name,
                'items' => $portion
            ];
            array_push($foodgroup, $arr);

            $arr = [
                'foodgroup_name' => $foodgroup_name,
                'items' => $foodgroup
            ];
            $foodgroup_name = $item['foodgroup_name'];
            $portion_name = $item['portion_name'];
            unset($item['foodgroup_name']);
            unset($item['portion_name']);
            $portion = [$item];
            $foodgroup = [];
            array_push($out, $arr);
        }
    }
    $arr = [
        'portion_name' => $portion_name,
        'items' => $portion
    ];
    array_push($foodgroup, $arr);
    $arr = [
        'foodgroup_name' => $foodgroup_name,
        'items' => $foodgroup
    ];
    array_push($out, $arr);
    return $out;
}

編輯:與您的數據庫:

$food_group = DB::table('foods')->join('food_group', 'food_group.id', '=', 'foods.food_group_id')->groupBy('food_group_id')->get();
$out = [];
foreach ($food_group as $item) {
     $foods = DB::table('foods')->join('portions', 'portions.id', '=', 'foods.portion_id')->where('food_group_id', $item->id)->groupBy('portion_id')->get();
     $arr1 = [];
     foreach($foods as $item2) {
          $por_food = DB::table('foods')->where('food_group_id',$item->id)->where('portion_id',$item2->id)->get();
          $arr = [
              'portion_name' => $item2->name,
              'items' => $por_food
          ];
          array_push($arr1, $arr);
     }
     $arr2 = [
           'foodgroup_name'=>$item->name,
           'items'=>$arr1
     ];
     array_push($out, $arr2);
}
return response()->json(['data'=>$out],200);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM