考虑一个论坛,可以有许多子论坛,可以有更多的子论坛。
我的forums
表格如下:
id
,parent_id
,name
,is_category
论坛类别(is_category
)中不能包含帖子。但是,parent_id
表中的id
可以是forums
;这是我可以在论坛中放置子论坛的一种方式。简而言之,一个论坛可以有很多子论坛,可以有更多的子论坛,可以有更多的子论坛等等......
演示记录:
| 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()
,因为这只会计算每个子论坛所具有的线程。我还想计算子论坛所有孩子的线程数。
答案 0 :(得分:1)
你可以用递归来做。
function countThreads($forum) {
$count = $forum->threads->count();
if ($forum->hasSubforum()) { {
foreach ($forum->subforums as $subforum) {
$count += countThreads($subforum);
}
}
return $count;
}