【发布时间】:2017-02-20 12:25:18
【问题描述】:
我的应用中有名为帖子的实体。帖子可以是其他帖子的子帖子,因此父帖子有 hasMany('posts'),子帖子有 hasOne('post'),包含是无限的。
这是架构:
如何递归地获取第一个“post_id”设置为空的帖子的所有孩子和孩子的孩子等?
请不要在这里评论性能,我知道这样的模式很糟糕,我只想知道如何正确编写递归函数来检索无限嵌套的帖子。
比如说,我有第一篇文章 1。
帖子 2 和 3 是帖子 1 的子项。
帖子 4 和 5 是帖子 2 的子项。
帖子 6 和 7 是帖子 3 的子项。
帖子 8,9,10 是帖子 5 的子项。
帖子 11、12、13 是帖子 7 的子项。
帖子 14 是帖子 10 的子项。
我想编写一个递归函数,让我发布 2-14 个帖子。
【问题讨论】:
-
这个逻辑设计似乎没有经过深思熟虑。我可以问为什么嵌入这么深的帖子吗?在 Facebook 上,他们在父帖子中深度嵌入 2 个(父 -> 评论 -> 评论评论)
-
在这种情况下您必须使用 hasMany 是不正确的,因为帖子 1 有 2 个孩子。
-
@Derek 请忘记为什么会这样,以及性能。这里不是这样。对我来说最重要的是编写递归函数。关于模式,它不是一个真正的用例。
-
对于真正有效的事情,您的数据库中可能应该有两个字段,
parent_post和sub_parent_post- 第一个将是它所属的顶级帖子 ID,第二个将成为它的直接后父母 -
显示您尝试过的方法以及为什么它不起作用。 Stackoverflow 不是代码编写服务。