如何从Laravel创建这种类型的JSON数据?

问题描述 投票:-3回答:2

我希望这种类型的JSON数据在laravel中用于具有mysql数据库结构的多维导航菜单。帮助我提供适当的数据库结构和Laravel方法来获取我想在图片中实现的数据集合。 example JSON data i want to achieve

enter image description here

--Category.php(型号)

public function subCategory(){
       return $this->hasMany('App\Category','p_id');
   }

- web.php

Route::get('/testt',function(){
   return App\Category::with('subCategory')
           ->where('p_id',0)
           ->get();
});

但这将只获得两级多维数组,我需要获取3级。是否可以通过这种类型的数据库模式? Dastabase schema

mysql laravel
2个回答
0
投票

我编辑了模型。请试试这个。这会对你有所帮助。

    //Category Model
    public function subCategory()
    {
      return $this->hasOne(Category::class, 'p_id', 'id');
    }
    //Category Model
    public function subChildCategory()
    {
       return $this->hasMany(Category::class, 'c_id', 'id');
    }

使用获取数据

$item = Category::with('subCategory.subChildCategory')->where('p_id', false)
        ->get()->toArray();

我创建的表是(你可以添加列)

CREATE TABLE `items` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `category_name` varchar(45) DEFAULT NULL,
  `c_id` varchar(45) DEFAULT NULL,
  `p_id` varchar(45) DEFAULT NULL,
   PRIMARY KEY (`id`)
);

//插入的数据是

id  cat_name        c_id   p_id
1   Electronics     null    0
2   Mobile          null    1
3   Samsung          2      1
4   LG               2      1

我的结果是

array:1 [
  0 => array:5 [
   "id" => 1
   "category_name" => "Electronics"
   "c_id" => null
   "p_id" => "0"
   "sub_category" => array:5 [
      "id" => 2
      "category_name" => "Mobile"
      "c_id" => null
      "p_id" => "1"
      "sub_child_category" => array:2 [
         0 => array:4 [
           "id" => 3
           "category_name" => "Samsung"
           "c_id" => "2"
           "p_id" => "1"
        ]
        1 => array:4 [
          "id" => 4
          "category_name" => "LG"
          "c_id" => "2"
         "p_id" => "1"
       ]
     ]
   ]
 ]
]

我不知道为什么人们会投票。请尝试这个编辑过的答案


0
投票

您可以简单地创建一个类似的数组然后使用

return response()->json($your_array, 200);
© www.soinside.com 2019 - 2024. All rights reserved.