[英]Laravel - count the total number of records in “threaded” records
考虑一个可以有很多子论坛的论坛,而这个子论坛可以有更多的子论坛。
我的forums
表是这样的:
id
, parent_id
, name
, is_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.