3
次のコードは、表示カテゴリリストのmy関数の戻り値です。配列を別の形式に変換する
マイ構造:
Parent_category - >カテゴリ - > Child_category
今私は、カテゴリとchild_category組み合わせるとcategory
is_bold
のparamに追加します。
がここに方法です。ここで
public function categories(){
$categories = self::buildTree(Category::get()->toArray());
$cats = $categories;
foreach($cats as $key=>$category){
if(count($category['childs'])>0){
foreach($category['childs'] as $key1=>$c){
if(count($c['childs'])>0){
$categories[$key]['childs'] = array_merge($categories[$key]['childs'], $c['childs']);
unset($categories[$key]['childs'][$key1]['childs']);
$categories[$key]['childs'][$key1]['is_bold']=1;
}
}
$categories[$key]['childs'] = self::array_sort($categories[$key]['childs'], 'id', SORT_ASC);
}
}
return response()->json(array('data' => $categories), 200);
}
はbuildTree方法です:
public static function buildTree(array $elements, $parentId = null){
$result = array();
foreach ($elements as $element) {
if($element['parent_id'] == $parentId) {
$children = self::buildTree($elements, $element['id']);
$element['childs'] = [];
if ($children) $element['childs'] = $children;
$result[$element['id']] = $element;
}
}
return array_values($result);
}
ここでは私のリターン
"data": [
{
"id": 1,
"parent_id": null,
"name": "tv",
"icon": null,
"slack": null,
"childs": [
{
"id": 2,
"parent_id": 1,
"name": "tvs",
"icon": null,
"slack": null,
"is_bold": 1
},
{
"id": 3,
"parent_id": 2,
"name": "LED tvs",
"icon": null,
"slack": null,
"childs": []
},
{
"id": 4,
"parent_id": 2,
"name": "4K tvs",
"icon": null,
"slack": null,
"childs": []
},
{
"id": 5,
"parent_id": 1,
"name": "videos",
"icon": null,
"slack": null,
"is_bold": 1
},
{
"id": 6,
"parent_id": 5,
"name": "home cinema",
"icon": null,
"slack": null,
"childs": []
},
{
"id": 7,
"parent_id": 5,
"name": "videoplayers",
"icon": null,
"slack": null,
"childs": []
}]
}]
だ。しかし、今私はこのようなデータを返したい:
{
"id": 1,
"parent_id": null,
"name": "Телевизоры, аудио, видео",
"icon": null,
"slack": null,
"childs": [
"televizory": [ {
"id": 2,
"parent_id": 1,
"name": "Телевизоры",
"icon": null,
"slack": null,
"is_bold": 1
},
{
"id": 3,
"parent_id": 2,
"name": "LED телевизоры",
"icon": null,
"slack": null,
},
{
"id": 4,
"parent_id": 2,
"name": "4K Телевизоры",
"icon": null,
"slack": null,
}],
video": [ {
"id": 5,
"parent_id": 1,
"name": "Домашнее видео, аудио",
"icon": null,
"slack": null,
"is_bold": 1
},
{
"id": 6,
"parent_id": 5,
"name": "Домашние кинотеатры",
"icon": null,
"slack": null,
},
{
"id": 7,
"parent_id": 5,
"name": "Видеоплееры",
"icon": null,
"slack": null,
},
{
"id": 8,
"parent_id": 5,
"name": "Проекторы",
"icon": null,
"slack": null,
},
{
"id": 9,
"parent_id": 5,
"name": "Акустика Hi-Fi",
"icon": null,
"slack": null,
},
{
"id": 10,
"parent_id": 5,
"name": "Аксессуары",
"icon": null,
"slack": null,
}]