Laravel 5.7三级嵌套JSON响应代码修改求助
解决Laravel三级分类JSON嵌套的问题
兄弟,我看你已经搞定了二级分类的嵌套,现在要把sub_category嵌套到对应的main_category里其实很简单,核心就是在遍历每个main_category的时候,用它的main_category_id去关联查询对应的子分类就行。我帮你把代码改好,还顺便优化了SQL注入的问题,你直接用就行:
public function fetchCategory() { // 查询所有分类类型 $categoryTypes = DB::select(DB::raw("SELECT * FROM table_category_type")); $jsonResult = array(); foreach ($categoryTypes as $index => $type) { $jsonResult[$index]["category_id"] = $type->category_id; $jsonResult[$index]["category_type"] = $type->category_type; // 查询当前分类类型下的所有主分类(用参数绑定避免SQL注入) $mainCategories = DB::select( DB::raw("SELECT * FROM table_main_category WHERE category_type_id = ?"), [$type->category_id] ); // 遍历每个主分类,关联对应的子分类 foreach ($mainCategories as &$mainCat) { // 查询当前主分类下的所有子分类 $subCategories = DB::select( DB::raw("SELECT * FROM table_sub_category WHERE main_category_id = ?"), [$mainCat->main_category_id] ); // 给当前主分类添加sub_category字段 $mainCat->sub_category = $subCategories; } // 把带子分类的主分类数组赋值给结果 $jsonResult[$index]["main_category"] = $mainCategories; } return Response::json(['success' => '1', 'data' => $jsonResult], 200); }
关键修改点说明:
- 新增子分类关联逻辑:在拿到
mainCategories数组后,通过foreach遍历每个主分类,用它的main_category_id作为条件查询对应的sub_category,然后把结果赋值给当前主分类的sub_category属性。 - SQL注入防护:把原来直接拼接变量的SQL写法改成了参数绑定(
?占位符 + 数组传参),避免了SQL注入风险,这在Laravel里是更规范的写法。 - 引用遍历:用
&$mainCat的引用方式遍历主分类,这样修改$mainCat的时候会直接修改原数组里的元素,不用额外赋值。
修改后的JSON响应会变成这样(示例):
{
"success": "1",
"data": [
{
"category_id": 2,
"category_type": "Sports",
"main_category": [
{
"main_category_id": 1,
"category_type_id": 2,
"category_name": "Popular Sports",
"sub_category": [
{"sub_category_id":1,"category_type_id":2,"main_category_id":1,"sub_category_name":"Football"},
{"sub_category_id":2,"category_type_id":2,"main_category_id":1,"sub_category_name":"Basketball"}
]
},
// 其他主分类及对应的子分类...
]
},
// 其他分类类型...
]
}
内容的提问来源于stack exchange,提问作者smita patil
相关产品推荐
相关产品推荐

