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

时间:2019-02-27 04:48:43

标签: mysql laravel

我想在laravel中使用JSON数据库类型的JSON数据,以便使用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

2 个答案:

答案 0 :(得分:0)

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

return response()->json($your_array, 200);

答案 1 :(得分: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"
       ]
     ]
   ]
 ]
]

我不知道人民为什么投票。 请尝试修改后的答案