我希望这种类型的JSON数据在laravel中用于具有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
我编辑了模型。请试试这个。这会对你有所帮助。
//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"
]
]
]
]
]
我不知道为什么人们会投票。请尝试这个编辑过的答案
您可以简单地创建一个类似的数组然后使用
return response()->json($your_array, 200);