[英]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.