数据库结构: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的方式就好,当然直观性不如盖楼也会引发出一些问题,比如中间楼层被管理员删除等...
添加回答
举报
0/150
提交
取消