2 回答
TA贡献1829条经验 获得超9个赞
根据您的建议和评论,我修改了您的代码,一旦检查并让我知道。
class PrivilegesController extends Controller
{
public function getAllPrivileges()
{
$privileges = DB::table('prev_definition')->orderBy('id', 'asc')->get();
// add below line, keep your old code as it is and check
$privileges = json_decode(json_encode($privileges), true);
$privileges = $this->build_heirarchy($privileges);
$resultArray = ['status' => true, 'message' => 'Privileges found!', 'data' => $privileges];
return json_encode($resultArray);
}
public function build_heirarchy($result_set, $parent_id = 0)
{
$rs = array();
foreach ($result_set as $row) {
$row['is_checked'] = 1; // here is error
if ($row['parent_id'] == $parent_id) {
$children = $this->build_heirarchy($result_set, $row['id']);
if ($children) {
if ($children[0]['type'] == 'menu') {
$type = 'submenu';
} else {
$type = 'permission';
}
$row[$type] = $children;
}
$rs[] = $row;
}
}
return $rs;
}
}
编辑
只有父 id 为 0 的记录,因此它只会创建一个父记录,并递归地附加子数据。检查这个。
现在,对于父 id 1,它在屏幕截图中有 2 条记录,因此两个元素将附加在父元素中。
现在,对于父 id 2,它在屏幕截图中有 4 条记录,因此 4 个元素将附加到 id 为 2 的元素内。
考虑到父ID,这将在每个元素的内部进行。
随后所有数据将附加到它的每个父级。所以索引只有一个,数据递归地附加到它的每个相关父级。
我希望我很清楚。
TA贡献2041条经验 获得超4个赞
if ($children)
{
if($children[0]->type=='menu')
$type = 'submenu';
else
$type = 'permission';
$row[$type] = $children;
}
- 2 回答
- 0 关注
- 279 浏览
添加回答
举报