作者热门文章
- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我有一个模型 CourseModule
,每个项目都与同一个模型相关。
public function parent()
{
return $this->belongsTo('App\CourseModule','parent_id')->where('parent_id',0);
}
public function children()
{
return $this->hasMany('App\CourseModule','parent_id');
}
我尝试了以下方法,但它只返回单一级别的关系。
CourseModule::with('children')->get();
我正在尝试创建如下所示的 json 输出,
[
{
"id": "1",
"parent_id": "0",
"course_id": "2",
"name": "Parent",
"description": "first parent",
"order_id": "1",
"created_at": "-0001-11-30 00:00:00",
"updated_at": "-0001-11-30 00:00:00",
"children": [
{
"id": "2",
"parent_id": "1",
"course_id": "2",
"name": "Child 1",
"description": "child of parent",
"order_id": "2",
"created_at": "-0001-11-30 00:00:00",
"updated_at": "-0001-11-30 00:00:00",
"children": [
{
"id": "3",
"parent_id": "2",
"course_id": "2",
"name": "Child2",
"description": "child of child1",
"order_id": "2",
"created_at": "-0001-11-30 00:00:00",
"updated_at": "-0001-11-30 00:00:00",
"children": [
{
"id": "4",
"parent_id": "3",
"course_id": "2",
"name": "Child 3",
"description": "child of child 2",
"order_id": "2",
"created_at": "-0001-11-30 00:00:00",
"updated_at": "-0001-11-30 00:00:00",
"children": []
}
]
}
]
}
]
}
]
我不明白如何获取内部子对象。
最佳答案
您应该在子关系中使用 with('children')
和父关系中的 with('parent')
。
为了你的代码是递归的:
public function parent()
{
return $this->belongsTo('App\CourseModule','parent_id')->where('parent_id',0)->with('parent');
}
public function children()
{
return $this->hasMany('App\CourseModule','parent_id')->with('children');
}
注意:确保您的代码具有某些或其他退出条件,否则它会陷入永无止境的循环。
关于php - 同一模型上 Eloquent 亲子关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34758965/
如果我有类似 categoryA -> subcategoryA--> 书籍关系的 pojo。子类别 A 是父类别 A 的子类别。 book 是 subcategoryA 的 child 在这种情况下
我是一名优秀的程序员,十分优秀!