有一个递归评论部分的最佳方法是什么,其中评论的结构如下:
top level comment (parent:0, id:1)
reply comment (parent: 1, id: 2)
reply reply comment (parent: 2, id: 5)
reply comment (parent: 1, id: 4)
top level comment (parent:0, id:3)
top level comment (parent:0, id: 6)
我已经有了一个回复现有注释的方法,但是我需要一种方法来遍历数据库中的每一行来创建上面的结构。
答案 0 :(得分:1)
因此,您将注释数据存储在关系数据库中,其中每个注释都具有父ID,然后最简单的方法是使用递归。您可以在PHP中执行递归函数来查询会导致大量开销的数据库,或者您可以在数据库中编写一个递归过程,这将是对数据库的长时间运行查询。
您还可以将数据重组为“嵌套集”结构(这里有一个很好的写法:http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/),然后您可以在不进行任何递归的情况下检索数据。但是,插入物的成本会更高。
另一种解决方案是放弃关系模型并使用文档数据库,该数据库允许您存储没有多个记录的任意层次结构。这可以使用Postgresql,CouchDB或MongoDB等数据库。
在不知道您正在使用哪个数据库系统的情况下,无法为您提供完美的处方。希望这个答案为您提供足够的信息来设计您自己的实验并找到适合您情况的解决方案。