我如何计算嵌套回复?

时间:2014-07-31 12:28:21

标签: laravel eloquent

我有这样的表结构。

--comments
id      article_id       comment_parent
1       9                0
2       0                1
3       0                1
4       0                2
5       0                4

基本上,第一条评论是关于article_id的,评论的回复是关于comment_parent的。上面的数据库创建了一个嵌套的注释,如下所示:

- Comment 1
    - Comment 2
        - Comment 4
            - Comment 5
    - Comment 3

问题是,我找不到如何确定文章中有多少条评论。目前,第9条有5条评论。

我相信一个递归函数可以解决这个问题,但我的Eloquent经验非常基础。

我该怎么办?

Article::find(9)->getAllCommentsAmount(); //5

2 个答案:

答案 0 :(得分:4)

如果允许,我建议将article_id添加到子评论中。它可以更容易地计算某篇文章的评论。

答案 1 :(得分:1)

您可能希望在数据库中实现嵌套集模式。

这里有一个相当流行的Laravel / Eloquent实现:

https://github.com/etrepat/baum

嵌套集专门设计用于与您的嵌套严重嵌套的数据,并允许您快速轻松地(即无需大量递归)查询数据。