如何像简书一样实现二级评论呢?我现有字段部分如下:
id 主键 pid 父id article_id 文章id
我原本的实现如下
/**
* @param $data array 数据
* @param $pid string 父级元素的名称 如 parent_id
* @param $id string 子级元素的名称 如 comm_id
* @param $p_id int 父级元素的id 实际上传递元素的主键
* @return array
*/
public function getSubTree($data , $pid , $id , $p_id = 0) {
$tmp = array();
foreach ($data as $key => $value) {
$value['avatar'] = getAvatar($value['from_user_id']);
if($value[$pid] == $p_id) {
$value['child'] = $this->getSubTree($data , $pid , $id , $value[$id]);
$tmp[] = $value;
}
}
return $tmp;
}
获取到的评论结构如下
那么我如何能够把第三级评论拿出来放到二级评论实现简书的那种评论结构呢?
3 回答
潇湘沐
TA贡献1816条经验 获得超6个赞
$comments = Db::name('comment')->where($map)->limit($offset, $per_page)->select();
foreach ($comments as $k => $v){
$comments[$k]['avatar'] = getAvatar($v['from_user_id']);
$map['pid'] = $v['id'];
$comments[$k]['child'] = Db::name('comment')->where($map)->select();
}
实际上我可以通过这种方式来实现,但是我担心的是当数据量大的时候,会不会出现性能问题,希望有经验的大佬指教。
以下是我通过这种方式得到的评论数据结构
拉风的咖菲猫
TA贡献1995条经验 获得超2个赞
我之前入职的一家公司做过一个APP。也是有你说的这种二级评论的情况。针对这种情况,解决的办法是分成两张表。
一张表存储一级评论。另外一张表存储二级评论。
然后每次获取的时候先去查询一级评论表,然后再次查询二级评论的表。
- 3 回答
- 0 关注
- 498 浏览
添加回答
举报
0/150
提交
取消