精华内容
下载资源
问答
  • 数据库设计——评论回复功能

    万次阅读 多人点赞 2017-05-03 02:43:48
    我的归宿就是健康与才干,一个人终究可以信赖...评论功能最主要的是发表评论回复评论(删除功能在后台)。评论功能的拓展功能体现有以下几方面: (1)单篇文章的评论数量和信息展示; (2)从时间维度,按照时间倒

    我的归宿就是健康与才干,一个人终究可以信赖的,不过是他自己,能够为他扬眉吐气的也是他自己,我要什么归宿?我已找回我自己,我就是我的归宿。——《胭脂》

    1、概述

    评论功能已经成为APP和网站开发中的必备功能。本文主要介绍评论功能的数据库设计。

    评论功能最主要的是发表评论和回复评论(删除功能在后台)。评论功能的拓展功能体现有以下几方面:
    (1)单篇文章的评论数量和信息展示;
    (2)从时间维度,按照时间倒叙的方式展示动态的用户评论信息;
    (3)不同栏目,不同模块,不同时间维度的评论排行展示;
    (4)精华评论的单独推荐和聚合展示;
    (5)评论后直接分享到绑定的第三方平台;
    (6)点赞数、回复数等维度的排行等。

    评论的后台管理:
    (1)删除;
    (2)推荐;
    (3)精华;
    (4)屏蔽,敏感关键字的库的完善、自动屏蔽或者替换功能。

    本篇文章主要分析几种客户端评论数据表的设计。

    2、数据表设计

    2.1 一问一答模式

    (1)需求分析

    大部分APP采用简单的评论设计即可,即是一问一答模式,比如微信朋友圈的评论功能的设计。如:

    A:今天天气真好!
    B @ A :今天天气确实不错!

    这种设计简单、直接,也满足了用户评论、回复的基本要求,对于没有大量用户评论的APP需求足够。

    (2)数据库设计
    这种场景下一般评论较少,评论不活跃,可以不区分评论和回复,统一看成评论。区别是,有些评论是直接评论主题,而有些是@其他用户,使用一张表就可以达到效果,评论表设计如下:

    表字段字段说明
    id主键
    topic_id主题id
    topic_type主题类型
    content评论内容
    from_uid评论用户id
    to_uid评论目标用户id

    topic_type:为了能复用评论模块,我们引入这个字段来区分主题的类别。

    from_uid:表示评论人的id,通过该id我们可以检索到评论人的相关信息。

    to_uid 是评论目标人的id,如果没有目标人,则该字段为空

    出于性能的考虑,往往我们会冗余评人的相关信息到评论表中,比如评论人的nick、头像,目标用户也是如此。 这样一来我们就只用查询单表就可以达到显示的效果

    有时,目标用户有多个,那么可以将to_uid字段修改为to_uids,保存时用分隔符来分割用户id,而目标用户的信息再去查询缓存或者数据库。也可以简单的将多个目标用户的信息一起存成json格式,可以应付简单的展现需求。

    2.2 评论为主模式

    (1)需求分析

    如果以评论为主的显示模式,类似于下面的CSDN的评论显示模式:
    这里写图片描述

    这里将评论分为评论和回复,所有评论均挂在评论下面,类似于树状结构。

    (2)数据库设计
    在以评论为主的树形显示情况下,数据库的设计十分灵活,可以使用单表,添加一个parent_id字段来指向父评论,需要嵌套查询。

    同时也可以将评论拆分为评论表和回复表,评论挂在各种主题下面,而回复挂在评论下面。

    评论表设计如下:

    表字段字段说明
    id主键
    topic_id主题id
    topic_type主题类型
    content评论内容
    from_uid评论用户id

    回复表设计:

    表字段字段说明
    id主键
    comment_id评论id
    reply_id回复目标id
    reply_type回复类型
    content回复内容
    from_uid回复用户id
    to_uid目标用户id

    由于我们拆分了评论和回复,那么评论表就不再需要目标用户字段了,因为评论均是用户对主题的评论,评论表的设计更佳简洁了。

    回复表添加了一个comment_id字段来表示该回复挂在的根评论id,这样设计也是出于性能方面的考虑,我们可以直接通过评论id一次性的找出该评论下的所有回复,然后通过程序来编排回复的显示结构。 通过适当的冗余来提高性能也是常用的优化手段之一。

    reply_type:表示回复的类型,因为回复可以是针对评论的回复(comment),也可以是针对回复的回复(reply), 通过这个字段来区分两种情景。

    reply_id:表示回复目标的id,如果reply_type是comment的话,那么reply_id=commit_id,如果reply_type是reply的话,这表示这条回复的父回复。

    2.3 网易新闻盖楼模式

    (1)需求分析

    这种场景中评论和回复是同级显示的,回复不在显示结构上不用挂在一个评论下面。 双表的设计在这里就不太合适了,因为涉及到评论和回复的混排,使用双表则会导致查询的逻辑过于复杂。 所以建议还是采用单表的设计,不区分评论和回复会简化应用层的逻辑。 我们统一都看成评论,而有些评论是可以引用其他评论的。

    (2)数据库设计

    本人推荐采用闭包表的设计,例如:

    comment表设计:

    表字段字段说明
    id主键
    topic_id主题id
    topic_type主题类型
    content评论内容
    from_uid评论用户id

    parent_child表:

    表字段字段说明
    id主键
    parent_id父id
    child_id子id

    comment表保存所有评论内容,而parent_children表则记录评论表中各个评论的父子关系。

    查询时往往会按照时间排序,我们可以直接按id或者创建时间降序排列查询comment表即可。 如果用户想查询一条评论的完整引用,则可以通过parent_children来找到对应的路径。

    闭包表在查询时非常方便,但是插入的性能稍差,因为除了插入评论表以外,还需要把该条评论所有的父子关系插入到父子关系表中。 插入性能会随着评论层级的加深而线性下降。

    3、数据库优化

    如果你的系统每天都会拥有成千上万条评论,那么单表的设计肯定是不行,优化的方式有以下几种思路。

    (1)分库分表。 分库分表是最为常用也最有效的优化方式,建议按照主题来分库分表。 这样同一个主题下面的评论就会落到同一张表里,避免了跨表查询。

    (2)适当的数据冗余。 如果你需要显示评论人的相关信息,那么在插入评论时就把这些信息写入评论表中,避免多次查询。 实际上,如果是纪录数据,都可以冗余对应的数据信息,因为它们的数据的实时行和一致性要求并不高。

    (3)附加幂。数据只允许单项操作。 因为从幂性的要求来说,每个赞全都是一条记录。 评论的赞数如果都从点赞表中统计得出,那么性能开销会十分巨大,而且点赞如此轻量级的一个操作一定会加剧点赞表的竞争操作。 所以建议直接在评论表中添加一个like_count的计数器,该字段只增不减。客户端,可以设置取消效果。

    (4)热门评论加缓存。 类似于网易新闻的热门评论,读取频度非常高,可以专门开接口做缓存。

    展开全文
  • 评论回复功能demo

    2019-03-27 10:55:27
    通过JAVA结合js技术实现发表文章的评论回复功能,对评论和回复的功能可以删除,显示点赞数量。
  • 评论回复功能的实现

    万次阅读 多人点赞 2018-06-15 00:48:00
    最后的效果图如上,大家不难发现这个回复的想法和知乎的回复模式差不多(因为我就是照着那个思路实现的 :) ),只是这里少实现了查看对话的功能。下面说说我实现这个过程中遇到的一些困难。 首先讲讲我的数据库的...

     

    最后的效果图如上,大家不难发现这个回复的想法和知乎的回复模式差不多(因为我就是照着那个思路实现的 :) ),只是这里少实现了查看对话的功能。下面说说我实现这个过程中遇到的一些困难。

     

    首先讲讲我的数据库的实现:

    RId指的是每个评论的唯一id,这个R取得是review(评论)的意思

    RTId指的是每条帖子的id

    RRId指的是被回复的评论的id,如果有就是其id,无为0

    ROwnerName指的是此条评论的人的名字

    RTargetName指的是被回复的人的名字,可空

    RComments指的是评论的内容

    RTime指的是评论的时间

     

    (1)如何实现点击图中的“回复”按钮,在评论下方就弹出一个输入框。

    这个很好实现,主要涉及到的就是一些js的知识。

     

    那么,到底该怎么实现点击“回复”,就在这个评论下方弹出一个输入框而不是在其他的输入框下弹出呢?

    我们首先得给这个输入框所在的div分配一个唯一的id,这里我们可以使用评论的RId。

    然后再给回复按钮添加监听函数,也就是设置其onclick属性,传入的参数就是输入框的id。每当点击按钮的时候,都改变输入框所在div的display属性

     

    <button type="button" class="btn btn-secondary" onclick="hide('#{specificReview.RId}')">回复</button>  <br />
    <p class="cContent">#{specificReview.RComments}</p>   <!--每个人回复的评论 -->  <br />
    
    <div class="comment-edit" id="#{specificReview.RId}" style=" display: none;">
        <h:inputTextarea id="doubleComments"
                         class="form-control edit"
                         value="#{comment.RDComments}"                                
                         />
        <!--<h:message for="doubleComments" style="color:red"/>-->
        <div class="preview">
            <div class="buttons">
                <h:commandButton immediate="true" class="btn btn-secondary" rendered="#{!login.isLogin()}" value="评论前请先登录" action="#{navBean.login}" />
                <h:commandButton id="submitButton" rendered="#{login.isLogin()}" actionListener="#{discuss.setTopic(discuss.topic)}"  action="#{comment.storeIntoDB(discuss.topic.TId, specificReview.RId, login.userName, specificReview.ROwnerName)}" class="btn btn-primary post broadcast" value="回复"/>                
            </div>
        </div>
    </div>

    下面是javascript的代码

        <script>
            function hide(a) {
                if (document.getElementById(a).style.display !== 'none')
                {
                    document.getElementById(a).style.display = 'none';
                }
                else
                {
                    document.getElementById(a).style.display = '';
                }
            }
        </script>

     

    可能有的猿友会疑惑那些 h: 和 #{} 是什么东西。

     

    这个h:是JSF框架下的组件(应该不影响阅读吧,感觉和 HTML 的元素差不多),#{}是EL表达式。

     

     

    (2)我们可以看到,有那么多输入框(只是很多的display都是none,并没有显示)。那么如何确保获取到的输入框的值恰巧是我们评论的输入框的值呢?

    我们都不难想到使用EL表达式来取值,也就是上面代码中的<h:inputTextArea value="#{comment.RDComments}">

     

    但是大家可能会遇到下面这个问题:在点击“评论”按钮时,相当于提交表单,而这里就会默认将你回复的评论下面的所有的<h:inputTextArea>(也就是我们的输入框)中的value=#{comment.RDComments}执行一遍,这就导致了我们获取的评论值总是为空的情况。

    那么该怎么解决这个情况呢?

    其实很简单,就是在set函数中判断一下,如果获取的值为空,就不赋值。

        public void setRDComments(String RDComments) {
            if (RDComments.length() > 0) {
                this.RDComments = RDComments;
            }
        }

     

    (3)如何实现评论判空,我有两个想法

     

    1. 点击“评论”按钮会在其下面弹出唯一一个提示框,提示内容是“评论不能为空”。

    2.评论为空时,将评论按钮disabled掉,这个给输入框添加onchange函数就行,在函数里使用getElementById获取到输入框的value,为空则disabled。

     

    无论哪个想法,都绕不开给这个输入框分配一个唯一的id,因为我好像并没有找到获取到一个div的element,然后再获取其间的其他元素的js方法。说的有点绕

    <div id="onlyOne">
      <input name="inputText" type="text" />
      <button name="submitButton" type="button">回复</button>
    </div>

    就是我知道这个div的id是"onlyOne",我能不能通过document.getElementById("onlyOne"),然后通过某种方法得到这个div中name为inputText或者为submitButton的组件的value呢?希望有路过的猿友能提示一下到底有没有这样一种方法

    <2020-05-13> 这个是可以的,我随手搜了一下,感觉 https://stackoverflow.com/a/5753895/10315163 这个就很不错。

     

    先说一下,其实我并没有实现这个功能,只有几点关于给输入框分配唯一id的想法。

    没实现的原因是在JSF框架下,其组件的id是变的(这个我就十分不理解)。

    就像上面这个图中的id,前面的那个j_idt157怎么搞都搞不掉,后面那个10指的是这个页面第几个输入框(这个是自动生成的,0是第1个,10就是第11个),最后面的doubleComments才是设置的id。

     

    为了让这个输入框的id唯一,我尝试了一个组合id的方法:

    <div class="comment-edit" id="#{specificReview.RId}Div" style=" display: none;">
        <h:inputTextarea id="#{specificReview.RId}doubleComments"
                         class="form-control edit"
                         value="#{comment.RDComments}"                                
                         />
        <!--<h:message for="doubleComments" style="color:red"/>-->
        <div class="preview">
            <div class="buttons">
                <h:commandButton immediate="true" class="btn btn-secondary" rendered="#{!login.isLogin()}" value="评论前请先登录" action="#{navBean.login}" />
                <h:commandButton id="submitButton" rendered="#{login.isLogin()}" actionListener="#{discuss.setTopic(discuss.topic)}"  action="#{comment.storeIntoDB(discuss.topic.TId, specificReview.RId, login.userName, specificReview.ROwnerName)}" class="btn btn-primary post broadcast" value="回复"/>                
            </div>
        </div>
    </div>

    就是将id扩展一下,将原来的div的id改为"#{specificReview.RId}Div"(这样亲测有效),然后把输入框的id扩展为"#{specificReview.RId}doubleComments",然而这样并没有啥用,这个输入框的id依然是系统自己给分配的。

     

    然而,我依旧不信邪,既然div能实现组合id,那你这个输入框为啥不行,然后我就把这个输入框的id设置为"#{specificReview.RId}",然后它却报错了,报错原因是id不能为空。

     

    不过我还有一个想法,就是不使用div布局了,改用table布局。给这个table分配唯一id为"#{specificReview.RId}",然后我们就有一个document.getElementById("tableId").rows[id].cells[1].innerText;来获取到其下的<td>的值。不过我没有具体了解这个js方法,能不能实现我也不能保证。

     

    如果有猿友按照这个想法实现了,能不能劳烦通知我一声,毕竟我也想知道这玩意能不能成。

     

    (4)如何获取到被回复的人的评论的id

    这个可以通过添加函数action或者actionListener实现,然后将这个id作为调用函数的参数传进去,在调用的函数里保存这个id。

     

    当然实现类似的回复功能的方法有很多,我的这个只能算是其中的比较基础的一个。我在查看知乎评论的页面源码的时候,好像还没有发现知乎的评论输入框都有一个id之类的,这也是让我很困惑的地方。

     

    <2020-05-13> 这个东西是我好久以前做的,当时我们小组连版本管理都没有(我也不知道这个概念 XD),改完东西都是通过 U 盘拷贝来拷贝去的。依稀记得每次交换完最新代码我都是用类似 project1 等名称来命名那个文件夹,当时是清楚啥是啥,现在回去看都无法确定哪个是最新的。现在回头看来真的是感慨万千。

     

     <2020-05-13> 我对这个项目依稀的记忆是基于 JSF 的,然后还有 Java Bean,企业 Bean 什么的,服务器是 Glassfish(至于为什么不是 tomcat,我姑且不知道),IDE 是 Netbeans。这些都是个什么东西我早就忘的一干二净了,就连怎么运行这个项目也不记得了。剩下的只是项目文件夹下 12 的无意义的文件,和这篇记录当时自己颠簸的文章。还有最上面那个演示的 GIF 里回复后自动回到顶部的奇怪 bug。所以源码是不会提供了...,而且只要思路清晰,写出代码是没有问题的。(这个观念是我最近看完《如何阅读一本书》后和自己经历对比后坚信的,书中说“一个人如果说他知道他在想些什么,却说不来,通常是他其实并不知道他自己在想些什么。”)

     

    <2020-05-13> 刚刚看到了有人分享 MIT 的 [The Missing Semester of Your CS Education](https://missing.csail.mit.edu/) 这个课程,想到了自己一直不愿意直面的这篇文章,也想到了前几个月无意中逛到的几个人 ice1000ibug...,想起了龙应台的目送:“你和他的缘分就是今生今世不断地在目送他的背影渐行渐远。你站在小路的这一端,看着他逐渐消失在小路转弯的地方,而且,他用背影默默地告诉你,追不上。”(有改)。

     

    展开全文
  • 主要介绍了thinkPHP实现基于ajax的评论回复功能,结合实例形式分析了thinkPHP实现ajax评论回复所涉及的控制器、视图、样式、js使用post进行ajax提交、并附带了相应的SQL语句,需要的朋友可以参考下
  • php评论回复功能

    千次阅读 2019-09-21 20:25:55
    这里只实现简单的评论回复功能,并没有设置用户权限,关于权限问题前边的注册登录已经详细的介绍过,所以这里不做赘述: 首先我们要在数据库先建两张表,分别是pinglun表与huifu表: 建立完两张表后,开始写...

    这里只实现简单的评论回复功能,并没有设置用户权限,关于权限问题前边的注册登录已经详细的介绍过,所以这里不做赘述:

    首先我们要在数据库先建两张表,分别是pinglun表与huifu表:

    建立完两张表后,开始写评论模块,首先是建立表单,用文本域显示评论内容,然后用按钮提交到数据库:

    <form action="pingchuli.php" method="post">
    <input type="text" hidden="hidden" value="menghaoran" name="menghaoran" /><!--因为没有权限,这里给了一个默认值-->
    <div><textarea name="content"></textarea></div><br /><!--文本域评论显示的地方-->
    <input type="submit" value="评论" />
    </form>

    然后写评论的处理页面pingchuli.php:

    <?php
    
    $menghaoran = $_POST["menghaoran"];//获取用户
    $content = $_POST["content"];//获取评论内容
    $time = date("Y-m-d H-i-s");//获取当前时间
    echo "$time";
    
    require "DBDA.class.php";
    $db = new DBDA();
    $sql = "insert into pinglun values('','{$menghaoran}','{$content}','{$time}')";
    $arr=$db->query($sql,0);
    if($arr)
    {
        header("location:pinglun.php");    //返回主页面
    }

    看一下效果:

    然后引入封装类,写sql语句查询pinglun表,并遍历出各项数据,然后重点是要在评论后进行回复,所以也要查询huifu表遍历出回复的数据,这里虽然没有用户权限限制,但一定要获取接收人的id:

    <?php
    require "DBDA.class.php";
    $db = new DBDA();
    $sql= "select * from pinglun";
    $arr = $db->query($sql);
    foreach($arr as $v)//遍历出评论表中的数据
    {echo"<tr>
            <td>{$v[1]}</td><br>
            <td>{$v[2]}</td><br>
            <td>{$v[3]}</td><br>
            <form action='huichuli.php?id={$v[0]}' method='post'><textarea name='coment' ></textarea>
                <input type='submit' name='hui' value='回复'/>
            </form>
            <tr>";//回复也要遍历出来,而且要用表单包裹起来,因为要用到id
    
    $dc = new DBDA();
    $sql = "select * from huifu where jieshouid={$v[0]}";//找到接收者的id
    $arr = $dc->query($sql);
    foreach($arr as $v)
    {
        echo"
        <div style='color:red'>{$v[2]}</div>
        <div style='color:red'>{$v[3]}</div>
        <div style='color:red'>{$v[4]}</div>";
    }
    
    }
    
    ?>

    然后是回复的处理页面huichuli.php:

    <?php
    $id = $_GET["id"];//将点击回复的评论id传过来
    $times = date("Y-m-d H-i-s");//获取当前时间
    echo "$times";
    $coment = $_POST["coment"];
    $libai = "libai";//发送人默认值
    require "DBDA.class.php";
    $db = new DBDA();
    $sql = "insert into huifu values('','{$id}','{$libai}','{$times}','{$coment}')";//将数据添加到数据库中
    $arr=$db->query($sql,0);
    if($arr)
    {
        header("location:pinglun.php");    //回到主页面
    }

    最终结果图:

     

    转载于:https://www.cnblogs.com/mengshenshenchu/p/6891033.html

    展开全文
  • thinkphp5实现评论回复功能

    千次阅读 2018-09-07 17:06:45
    由于之前写评论回复都是使用第三方插件:畅言 所以也就没什么动手,现在证号在开发一个小的项目,所以就自己动手写评论回复,没写过还真不知道评论回复功能听着简单,但仔细研究起来却无法自拔,由于用户量少,所以...

    由于之前写评论回复都是使用第三方插件:畅言   所以也就没什么动手,现在证号在开发一个小的项目,所以就自己动手写评论回复,没写过还真不知道评论回复功能听着简单,但仔细研究起来却无法自拔,由于用户量少,所以我只考虑使用foreach双循环来实现,并没有采用别人介绍的递归方法。

     先来一张实现后的图

    参照微信朋友圈评论回复来写的

    实现起来需要两张表,当然一张表也是可以的,在这里我采用了评论表和回复表,

    评论表结构:

    回复表结构:

    由于在多次测试后发现循环多了数据会出现重复的情况,所以为了方便,我直接在评论表和回复表将用户名和头像存进去了,方便提取,内容字段我存的是json字符串,因为本人懒得去引用emoji表情插件,所以才出此下册,下面直接贴代码

     展示页面

     在这foreach循环里面我使用了引用&,要注意:赋值的循环不能直接在赋值下面使用,除非在赋值的循环中使用引用&,特别声明:引用传递尽量用  

    下面简单介绍一下foreach循环

    foreach($arr1 as $key=>$value){

        echo $key.'=>'.$value.' ';

    输出结果:1=>a 3=>22 5=>b 4=>c 8=>d

    foreach($arr2 as $key=>$value){

        echo $key.'=>'.$value.' ';

    输出结果:a=>aaa b=>bbb c=>ccc d=>ddd e=>eee

    foreach循环结构是按照数组内部的指针去循环的,当 foreach 开始执行时,数组内部的指针会自动指向第一个单元。因此下一次循环中将会得到下一个单元,不需要按照数组的键来遍历整个数组。这也是foreach与for的不同之处。当然,foreach只能用于数组和对象,并且由于 foreach 依赖内部数组指针,在循环中修改其值将可能导致意外的行为。

    思路就不再介绍,有问题直接回复,如果有哪位大牛可以给我介绍另一种实现评论回复的功能,感激不尽,有什么不足的地方需要大家指出来,共同进步

    展开全文
  • 很多项目或者系统都有评论或者回复的需求,但评论回复的实现往往都比较复杂,也不好实现。... 这篇文章详细介绍,从数据库设计到java后端实现,再到前端回显评论数据库,让评论回复功能的实现不在那么复杂。
  • 评论回复功能的设计与实现

    千次阅读 2020-03-16 10:18:07
    评论回复功能的数据库设计可以设计两张表,评论表和回复表,也可以将其设计为一张表,我采用的是一张表 评论回复表的相关字段(我做的是商品goods下的评论回复) 字段解释: gc_id:评论回复表id gc_uid:评论用户...
  • 各位,帮忙看看,该怎么使用来java实现评论回复功能? 如果有视频的话,可否发给视频链接?
  • 评论回复功能设计

    2019-03-01 20:05:44
    评论功能最主要的是发表评论回复评论(删除功能在后台)。评论功能的拓展功能体现有以下几方面: (1)单篇文章的评论数量和信息展示; (2)从时间维度,按照时间倒叙的方式展示动态的用户评论...
  • 基于vue+iview UI的多级评论回复功能

    千次阅读 热门讨论 2020-05-04 22:23:16
    我在做项目时遇到了需要评论回复功能。由于iview UI没有该组件,所以自定义设计 效果图如下 支持评论和多级回复 废话不多说,vue代码如下: 评论组件 <template> <div> <List item-layout=...
  • android朋友圈评论回复功能完美实现(沉浸式状态栏)android朋友圈评论回复功能完美实现(沉浸式状态栏)android朋友圈评论回复功能完美实现(沉浸式状态栏)
  • 仿朋友圈,QQ空间评论回复功能

    热门讨论 2015-08-10 16:29:41
    仿朋友圈,QQ空间评论回复功能,由于网上缺少这部分的demo,所以上传一个,提供给大家一个思路,可以在此基础上来改进!
  • android朋友圈评论回复功能(评论布局紧贴当前item底部显示),沉浸式状态栏,九宫格图片显示(大图预览)
  • 搭建博客之评论回复功能的实现

    千次阅读 2018-06-26 21:21:37
    一直觉得普通的评论功能过于单调,对于我这种看什么都喜欢翻评论区的人来说有点功能不足,既然要添加评论回复功能,具体要做到什么呢。1.对指定的评论回复2.对指定的回复回复3.属于某一评论下的回复树状排列在评论下...
  • 评论回复功能的数据库设计(JAVA+MYSQl)

    万次阅读 多人点赞 2019-04-01 23:40:59
    评论回复功能是社交网站最基本的功能,本文主要讲解评论留言的设计及实现。 需求: 用户评论日记,回复评论 显示所有评论 2.数据库设计 日记表:diary 用户表:user 回复表:reply 字段设计 private int ...
  • 这是一个类似微信朋友圈的家庭圈 实现了朋友圈的功能,主要是评价这块,微信上朋友圈的细节都考虑了,还有些不完善的地方欢迎指正!
  • android朋友圈评论回复功能完美实现(沉浸式状态栏).rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
  • 使用递归循环开发评论回复功能,适用于大部分的简单单体应用 评论功能或许是大多数的单体应用之中会用到的功能,我们会在自己所开发的项目之中进行集成该功能 大多数时候我们会将评论功能划分成以下几种: 单一型 ...
  • vue 实现评论回复功能

    万次阅读 热门讨论 2018-06-12 13:23:39
    参考文档https://blog.csdn.net/weixin_35987513/article/details/53748707项目中分别有三个组件1.dynamic (父组件)2.reply (子组件 评论的内容区块)3.commenttext (子组件 评论的输入框)首先在父组件,先通过异步...
  • springboot+mysql 实现评论回复功能

    千次阅读 多人点赞 2019-12-22 01:02:23
    1. 数据库结构 字段名 类型 注释 comment_id bigint 主键id user_Id bigint ...被回复用户id pid bigint 父id comment_msg varchar 回复内容 creat_time varchar 创建时间 其...
  • 注:1、comment_type字段针对于程序设计多个不同功能下单评论区分 2、comment_pic字段用于存储评论图片时使用 回复表:(如下图) 注:1、reply_type字段与评论中的comment_type字段用法一致 以上为数据库...
  • 在文本下面实现评论回复功能

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 38,611
精华内容 15,444
关键字:

评论回复功能