我想在laravel中使用JSON数据库类型的JSON数据,以便使用mysql数据库结构进行多维导航菜单。 帮助我提供适当的数据库结构和Laravel方法来获取我想要在图片中实现的数据收集。 example JSON data i want to achieve
-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
答案 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"
]
]
]
]
]
我不知道人民为什么投票。 请尝试修改后的答案