繁体   English   中英

Laravel-计算“线程”记录中的记录总数

[英]Laravel - count the total number of records in “threaded” records

考虑一个可以有很多子论坛的论坛,​​而这个子论坛可以有更多的子论坛。

我的forums表是这样的:

idparent_idnameis_category

论坛类别( is_category )中不能包含主题。 但是,可以在forums表中使用parent_id作为id 这是我可以在论坛中放置子论坛的一种方式。 简而言之,一个论坛可以有许多子论坛,而子论坛又可以有更多的子论坛,也可以有更多的子论坛,等等。

演示记录:

| id | parent_id | name              | is_category |
|----|-----------|-------------------|-------------|
| 1  | 0         | Suggestions       | 1           |
| 2  | 1         | site suggestions  | 0           |
| 3  | 1         | forum suggestions | 0           |
| 4  | 2         | bugs              | 0           |

我的观点:

@if ($forum->hasSubforum())
    @foreach ($forum->subforums as $subforum)
        {{ $subforum->name }}

        <h1>subforums</h1>
        @if ($forum->hasSubforum())
        @foreach ($subforum->subforums as $child)
            {{ $subforum->name }}
        @endforeach
        @endif
    @endforeach
@endif

我尝试过的

$threads = 0;
while(!$forum->subforums->isEmpty()) {
    $threads += $forum->threads->count();
    while(!$forum->subforums->isEmpty()) {
        $threads += $forum->threads->count();
    }
}

这甚至不起作用... :(

TL; DR如您所见,我向用户显示子表单。 但是,如果我想显示一个子论坛有多少个帖子,该怎么办? 请注意,一个子论坛可以有更多的子论坛,从而可以有很多线程。 我不能简单地执行$subforum->threads->count()因为那只会计算每个子论坛所拥有的线程。 我还想计算该子论坛的所有子级都有的线程数。

您可以通过递归来实现。

function countThreads($forum) {
    $count = $forum->threads->count();
    if ($forum->hasSubforum()) { {
        foreach ($forum->subforums as $subforum) {
            $count += countThreads($subforum);
        }
    }
    return $count;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM