我有一个Group.php
模型。 db表与列类似:id
,title
,description
,parent
。
parent
列引用了此表中另一个组的ID。因此,如果记录在父列中具有值,则它是另一个组的子项。如何以雄辩的方式进行并获得嵌套组的层次结构。
我想使用这个,所以当我在刀片中时我想为外部父组做foreach
然后为每个孩子做foreach
以查看是否有其他孩子然后做{ {1}}再次。
答案 0 :(得分:0)
你应该在Group Model中创建子关系:
function children(){
return $this->hasMany(Group::class, 'id','parent');
}
在控制器中你需要创建递归函数
function list_groups($groups)
{
$data = [];
foreach($groups as $group)
{
$data[] = [
'id' = $group->id,
'title' => $group->title,
//ToDo addd Your Data Here
'children' = list_groups($group->children),
];
}
return $data;
}
现在可以使用
$root_groups = Group::with('children')->whereParent(0)->get(); //get All Root group
$groups = list_groups($root_groups); // now get all childs
注意,代码未经过测试