仿微信评论代码

 今天项目遇到仿照微信的评论,但是又要有个顶级评论!

.首先看下数据库

user_id   是用户登陆表的id    cate_id是详情页id     pid关联id

// 互相评论回复逻辑   里面有一些点赞和评论数 用户名 用户头像这些,不用可删除  

public function getCommlists($cateId,$pinid,$userId){ if(empty($cateId)){ return array(); } $res = M('comment')->where(array('status'=>'1','is_del'=>'0','cate_id'=>$cateId))->order('addtime desc')->select(); $dataList = $stack = array(); if($res){ foreach($res AS $k=>$v){ //先将评论的数据进行入库(即comment_id=0) if($v['pid'] == $pinid){ $nickname = $this->user_name_infor($v['user_id']); $infoname = $this->user_name_infor($v['pid']); $v['nickname'] = $nickname['nickname']; $v['nickname_img'] = $nickname['icon']?$this->img_url.$nickname['icon']:''; $v['infoname'] = $infoname['nickname']; $v['infoname_img'] =$infoname['icon']?$this->img_url.$infoname['icon']:''; $v['addtime'] = date('Y-m-d H:i:s',$v['addtime']); // $v['like_num'] = $this->zan_infor($v['id']); //是否可删除 if($userId == $_v['user_id']){ $_v['is_dels'] =1; }else{ $_v['is_dels'] =0; } $v['_level'] = 0; //设置层级数 $v['_root'] = $v['id']; //标识评论id array_push($stack,$v); //入栈 unset($res[$k]); } } while(!empty($stack)){ $node = array_pop($stack); //出栈 $dataList[] = $node; foreach($res as $_k=>$_v){ if($_v['pid'] == $node['id']){ $nickname = $this->user_name_infor($_v['user_id']); $infoname = $this->user_name_infor($_v['pid']); $_v['nickname'] = $nickname['nickname']; $_v['nickname_img'] = $nickname['icon']?$this->img_url.$nickname['icon']:''; $_v['infoname'] = $infoname['nickname']; $_v['infoname_img'] =$infoname['icon']?$this->img_url.$infoname['icon']:''; $_v['addtime'] = date('Y-m-d H:i:s',$_v['addtime']); // $_v['like_num'] = $this->zan_infor($_v['id']); //是否可删除 if($userId == $_v['user_id']){ $_v['is_dels'] =1; }else{ $_v['is_dels'] =0; } $_v['level'] = $node['_level']+1; //设置层级数 $_v['_root'] = $node['_root']; //标识评论id array_push($stack,$_v); //入栈 unset($res[$_k]); } } } } $dataList['count'] = count($dataList); return $dataList; } // 根据id 获取用户信息 public function user_name_infor($user_id){ $username = M("User")->where(['id'=>$user_id])->find(); return $username; } // 根据id 获取评论点赞数 public function zan_infor($id){ $like_num = M("Comment_zan")->where(['com_id'=>$id])->count(); return $like_num; }
// 把查询出来的字集 挂到第一集评论下面   $userId用户登陆的id  数据表中的user_id  

$res
= M('comment')->where($where)->order('addtime desc')->select(); foreach ($res as $k => $v) { $er=$this->getCommlists($cateId,$v['id'],$userId); $user_res = $this->user_name_infor($v['user_id']); $res[$k]['nickname'] =$user_res['nickname']; $res[$k]['img'] =$user_res['icon']?$this->img_url.$user_res['icon']:''; $res[$k]['children'] = $er; $res[$k]['count'] = $res[$k]['children']['count'];// 提取评论数 $res[$k]['is_top'] = $v['sort']; $res[$k]['addtime'] = date('Y-m-d H:i:s',$v['addtime']); unset( $res[$k]['children']['count']); $res[$k]['like_num'] = $this->zan_infor($v['id']); //是否可删除 if($userId == $v['user_id']){ $res[$k]['is_dels'] =1; }else{ $res[$k]['is_dels'] =0; } }
原文地址:https://www.cnblogs.com/yanyanyanyanliu/p/9364755.html