话不多说直接放代码
不懂的直接评论
public function list()
{
$id = (int)$this->request->input('weekly_reports_id');
//查到数据
$list = $this->model->where('weekly_reports_id', $id)->get()->toArray();
$temp = [];
foreach ($list as $key => $comment) {
//parent_id为0的调用getSubtree方法进行递归循环
if ($comment['parent_id'] == 0) {
unset($list[$key]);
$comment['childrenList'] = $this->getSubTree($list, $comment['id']);
$temp[] = $comment;
}
}
return $temp;
}
public function getSubTree($list, $pid)
{
$temp = [];
foreach ($list as $key => $comment) {
if ($comment['parent_id'] == $pid) {
$temp[] = $comment;
unset($list[$key]);
$tempList = $this->getSubTree($list, $comment['id']);
$temp = array_merge($temp, $tempList);
}
}
return $temp;
}
展示结果
{
"msg": "获取成功",
"data": [
{
"id": 1,
"parent_id": 0,
"content": "wrqwer",
"user_id": 1,
"date": "2020-07-23 10:43:28",
"weekly_reports_id": 94,
"target_user_id": 17,
"created_at": null,
"updated_at": null,
"childrenList": [
{
"id": 2,
"parent_id": 1,
"content": "wqqqqq",
"user_id": 90,
"date": "2020-02-02 00:00:00",
"weekly_reports_id": 94,
"target_user_id": 17,
"created_at": null,
"updated_at": null,
"commentUser": {
"id": 90,
"name": "张三",
"avatar": "XXXXXXXXXXXX"
},
"targetUser": {
"id": 17,
"name": "李四",
"avatar": "XXXXXXXXXXXXXXXXXX"
}
},
{
"id": 3,
"parent_id": 2,
"content": "qwrqwe",
"user_id": 11,
"date": "2020-04-20 00:00:00",
"weekly_reports_id": 94,
"target_user_id": 19,
"created_at": null,
"updated_at": null,
"commentUser": {
"id": 11,
"name": "王五",
"avatar": "XXXXXXXXXXXXXXXX"
},
"targetUser": {
"id": 19,
"name": "赵六",
"avatar": "XXXXXXXXXXXXXXXXXXXXXXXX"
}
}
],
"commentUser": {
"id": 1,
"name": "清风",
"avatar": "XXXXXXXXXXXXXX"
},
"targetUser": {
"id": 17,
"name": "毛毛",
"avatar": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
}
}
],
"code": 200
}