想象一下下面的情形:
Comment ID 1
|
|--- Comment ID 2 (reply to ID 1)
|
|--- Comment ID 3 (reply to ID 2)
|
|--- Comment ID 4 (reply to ID 2)
|
|--- Comment ID 5 (reply to ID 4)
如何将以上内容存储到 SQL 中,以便稍后检索和列出它?
我的 PHP/SQL 比较好,但这种情况递归地让我头疼。有什么想法吗?
最佳答案
看起来这一切都是关于数据建模而不是 php 或 mysql。
您可以将其表示为树结构。只是认为评论只需要有 parent 。每条评论,一位家长。但是树中的第一项(根元素)没有父项)
因此,要在 OOP 中对此进行建模,您将使用一个类 Comment,该类将自身关联,并且该关系的名称将为 is_child_of。其中之一将具有空值。如果您想进一步了解此解决方案,请查看 Composite pattern ;)
关于数据库模型,您只需要一个包含您需要的关于它们的任何信息的表 Comments 以及一个名为 is_child_of 的字段。所以每个评论都会有一个父亲,但每个评论都在树的最高层。
由于评论有顺序,(在您的示例中,交换评论 3 和 4 是不同的)您应该考虑到您必须以某种方式对它们进行排序(ID,如果它是增量值或日期时间)。
希望对您有所帮助:)
关于php - 使用 PHP/SQL,如何存储和检索彼此堆叠/嵌套的评论?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7693399/