You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 07:38:51