为了账号安全,请及时绑定邮箱和手机立即绑定

评论应该怎么读取?

评论应该怎么读取?

慕娘9325324 2019-04-16 20:25:47
数据库结构:CREATETABLEIFNOTEXISTS`Blog`.`comments`(`id`BIGINTUNSIGNEDNOTNULLAUTO_INCREMENTCOMMENT'评论ID',`content`TEXTNOTNULLCOMMENT'评论内容',`create_time`INTUNSIGNEDNOTNULLDEFAULT0COMMENT'评论时间',`author`VARCHAR(45)NOTNULLDEFAULT''COMMENT'作者名称',`ip`VARCHAR(100)NOTNULLDEFAULT''COMMENT'IP',`url`VARCHAR(255)NOTNULLDEFAULT''COMMENT'网址',`email`VARCHAR(255)NOTNULLDEFAULT''COMMENT'邮箱',`agent`VARCHAR(255)NOTNULLDEFAULT''COMMENT'浏览器信息',`parent_id`INTUNSIGNEDNOTNULLDEFAULT0COMMENT'父级ID',`status`VARCHAR(100)NOTNULLDEFAULT''COMMENT'状态',`article_id`INTUNSIGNEDNOTNULLDEFAULT0COMMENT'评论的文章ID',PRIMARYKEY(`id`),INDEX`fk_article_comments_article1_idx`(`article_id`ASC))ENGINE=MyISAMCOMMENT='文章评论表';相应文章的评论读出来以后,我用的递归把评论展示出来。但是现在有个问题,比如我一页显示10个评论,要显示第一页,我现在把顶级评论读出来了,但是这些评论下的回复怎么查最优呢?(因为回复可能有很多级,所以我现在递归查询数据库已经。。。咳咳)
查看完整描述

2 回答

?
一只斗牛犬

TA贡献1784条经验 获得超2个赞

如果使用3个id呢,一个是回复对象(上级回复)id,一个是文章id,一个是顶级回复id呢,这样可以用顶级回复id一次性去取全部的,再根据时间排序好楼层,还需要一个字段标记不是回复别人而是直接评论文章,加入这个条件来分页
其实不建议盖那么多楼层,一次就好,想sf这样,评论都在现在,使用@xxx的方式就好,当然直观性不如盖楼
也会引发出一些问题,比如中间楼层被管理员删除等...
                            
查看完整回答
反对 回复 2019-04-16
  • 2 回答
  • 0 关注
  • 430 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信