如何像简书一下实现二级评论
如何像简书一样实现二级评论呢?
我现有字段部分如下:
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;
}
获取到的评论结构如下
那么我如何能够把第三级评论拿出来放到二级评论实现简书的那种评论结构呢?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
实际上我可以通过这种方式来实现,但是我担心的是当数据量大的时候,会不会出现性能问题,希望有经验的大佬指教。
以下是我通过这种方式得到的评论数据结构
最好不要foreach里面跟sql,数据量大就会阻塞
把article查出来 ,再把comment查出来,拼在一起就行
我之前入职的一家公司做过一个APP。也是有你说的这种二级评论的情况。针对这种情况,解决的办法是分成两张表。
一张表存储一级评论。另外一张表存储二级评论。
然后每次获取的时候先去查询一级评论表,然后再次查询二级评论的表。
增加一个顶级父节点字段