为评论系统修改了前序遍历

时间:2009-06-14 16:46:02

标签: tree comments tree-traversal threaded-comments

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

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

我的评论表如下:

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

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

这是管理这个的好方法:

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

要加载博客帖子的评论,我会找到lft和rgt WHERE blog_post_id = x和root = true,然后选择lft和rgt之间的所有评论,其中blog_post_id是x ...

我刚想出了这个方法,所以我很确定必须有更好的方法。

由于

2 个答案:

答案 0 :(得分:0)

如何添加blog_post_id列并将博客帖子本身视为虚拟评论(评论树的根目录)?然后它可以有多个孩子。

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

答案 1 :(得分:0)

你用一种非常好的方法“来了”。它是管理嵌套注释的标准方法。关于这个和实现的文献也很多。

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