0

我正在尝试为博客制作评论系统。我有修改后的预购遍历系统工作(使用本指南: http: //mikehillyer.com/articles/managing-hierarchical-data-in-mysql/)。

不过我有几个问题。我不认为该指南解释了如何管理不同的博客帖子,以及添加不是回复的评论。

我的评论表如下所示:

+-------------+----------------------+-----+-----+

| comment_id  | message              | lft | rgt |
auto increment
+-------------+----------------------+-----+-----+

这是管理此问题的好方法吗:

我在评论表中添加了名为“blog_post_id”和“root”的列。当我发表一篇博文时,我会在评论表中添加一个带有 blog_post_id 的条目,并将 root 设置为 true。然后,lft 是comment_id,右边是comment_id + 1。

要加载博客文章的评论,我会在 blog_post_id = x 和 root = true 的地方找到 lft 和 rgt,然后选择 lft 和 rgt 之间 blog_post_id 为 x 的所有评论...

我只是想出了这个方法,所以我很确定一定有更好的方法。

谢谢

4

2 回答 2

0

添加一blog_post_id列并将博客文章本身视为虚拟评论(评论树的根)怎么样?然后它可以有多个孩子。

使用这种方法,您可以使用该文章中的所有算法不变,但需要注意的是您添加AND blog_post_id == foo到所有查询并始终忽略根评论(因为它代表博客本身。)

于 2009-06-14T18:32:07.627 回答
0

你“想出了”一个很好的方法。这是管理嵌套注释的标准方法。也有很多关于这个和实现的文献。

在这里查看示例实现:http ://api.rubyonrails.org/classes/ActiveRecord/Acts/NestedSet/ClassMethods.html

于 2009-06-14T20:06:39.413 回答