我正在尝试为博客制作评论系统。我有修改过的前序遍历系统(使用本指南: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 ...
我刚想出了这个方法,所以我很确定必须有更好的方法。
由于
答案 0 :(得分:0)
如何添加blog_post_id
列并将博客帖子本身视为虚拟评论(评论树的根目录)?然后它可以有多个孩子。
使用此方法,您可以使用该文章中的所有算法不变,但需要注意的是,AND blog_post_id == foo
添加到所有查询中,并始终忽略根注释(因为它代表博客本身。)< / p>
答案 1 :(得分:0)
你用一种非常好的方法“来了”。它是管理嵌套注释的标准方法。关于这个和实现的文献也很多。
在这里查看示例实现:http://api.rubyonrails.org/classes/ActiveRecord/Acts/NestedSet/ClassMethods.html