php - 使用 PHP/SQL,如何存储和检索彼此堆叠/嵌套的评论?

标签 php mysql sql database

想象一下下面的情形:

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)

(example in action)

如何将以上内容存储到 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/

相关文章:

php - 如何制作自定义辅助函数,在 Laravel 5 的每个 Controller 中都可用

php - 调试 PHP,NetBeans 不适用于 xdebug v3

php - 在谷歌地图中从mysql数据库创建折线

MySQL Insert if select is null 以避免双向重复

创建过程中的 MySql OUT 参数未编译

mysql - 使用 R Shiny 中的 rfm 包进行新近度、频率和货币值(value)分析

显示表中最后一行值的 PHP 数组

PHP 如何发送原始 HTTP 数据包

mysql - 如何使用 sql Rank 对分数进行排名

php - 如何在入住和退房之间查看空房情况?