评论应该怎么读取?

数据库结构:
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=MyISAM
COMMENT='文章评论表';
相应文章的评论读出来以后,我用的递归把评论展示出来。
但是现在有个问题,比如我一页显示10个评论,要显示第一页,我现在把顶级评论读出来了,但是这些评论下的回复怎么查最优呢?(因为回复可能有很多级,所以我现在递归查询数据库已经。。。咳咳)
慕娘9325324
浏览 458回答 2
2回答

一只斗牛犬

如果使用3个id呢,一个是回复对象(上级回复)id,一个是文章id,一个是顶级回复id呢,这样可以用顶级回复id一次性去取全部的,再根据时间排序好楼层,还需要一个字段标记不是回复别人而是直接评论文章,加入这个条件来分页其实不建议盖那么多楼层,一次就好,想sf这样,评论都在现在,使用@xxx的方式就好,当然直观性不如盖楼也会引发出一些问题,比如中间楼层被管理员删除等...
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript