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

Laravel中如何将学科数组嵌套到课程JSON对象中?

调整Laravel API响应结构:将学科数组嵌套到课程对象内

要实现把学科数组嵌套在课程对象内部的JSON结构,你可以通过两种方式修改代码:

方式一:预加载关联(推荐,优化查询性能)

利用Laravel的关联预加载with()方法,一次性获取课程及其关联的学科,同时避免N+1数据库查询问题:

public function getSubjectsPeriodsJson(int $id){
    $student = Student::find($id);
    // 预加载subjects关联,获取学生最新的课程
    $course = $student->courses()->with('subjects')->latest()->first();
    
    return response()->json(['course' => $course], 200);
}

方式二:手动为课程对象添加属性

如果不需要预加载,也可以手动将学科集合赋值给课程对象的属性:

public function getSubjectsPeriodsJson(int $id){
    $student = Student::find($id);
    $course = $student->courses()->latest()->first();
    // 给课程对象添加subjects属性,赋值对应的学科集合
    $course->subjects = $course->subjects()->get();
    
    return response()->json(['course' => $course], 200);
}

修改后的JSON响应结构

调整后返回的JSON会将subjects数组嵌套在course对象内部:

{
  "course": {
    "id": 25,
    "name": "1A",
    "academic_course_id": 18,
    "user_id": 2,
    "created_at": "2023-02-01T12:51:32.000000Z",
    "updated_at": "2023-02-01T12:51:32.000000Z",
    "pivot": {
      "student_id": 35,
      "course_id": 25
    },
    "subjects": [
      {
        "id": 11,
        "name": "matematicas",
        "course_id": 25,
        "created_at": "2023-02-01T13:00:47.000000Z",
        "updated_at": "2023-02-01T13:00:47.000000Z"
      }
    ]
  }
}

内容的提问来源于stack exchange,提问作者lewis04

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 09:25:28