想象一下以下的章程:
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方面相对较好,但是这种情况递归地杀了我的脑袋。有什么想法吗?
答案 0 :(得分:1)
您可以将数据存储为nested set。这是在SQL表中表示树状数据的一种非常常见的方式。
答案 1 :(得分:1)
看起来这就是数据模型,而不是php或mysql。
您可以将其表示为树结构。只要认为评论只需要一个父母。每个评论,一个父母。但是树中的第一个项目(根元素)将没有父项
因此,要在OOP中对此进行建模,您将使用将自己关联的类Comment,该关系的名称将为is_child_of。其中一个将具有空值。如果您想进一步了解此解决方案,请查看Composite pattern;)
关于数据库模型,您只需要一个表,它将包含您需要的任何内容以及一个名为is_child_of的字段。因此,每个评论都会有一个父亲,但每个评论都会在树的最高层进行评论。
由于评论有一个订单,(在你的例子中交换评论3和4不一样)你应该考虑到你必须以某种方式对它们进行排序(如果它是增量值,则为ID)或日期时间。)
希望有所帮助:)