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
相关产品推荐
相关产品推荐

