我目前的代码:
public function countThreads() {
$count = $this->threads->count();
if ($this->hasSubforum()) {
foreach ($this->subforums as $subforum) {
$count += $this->countThreads($subforum);
}
}
return $count;
}
我正在访问"线程"在我的模型中为$this
。我需要将$subforum
传递给自己,但我怎么能在课堂上这样做呢?
在我的控制器中,我只是在做:
$forum = Forum::where('id', $id)->first();
$forum->countThreads();
我该怎么做这个递归?谢谢!
答案 0 :(得分:2)
您不需要传递任何参数*,您可以在子论坛上调用countThreads
方法$subforum->countThreads()
public function countThreads()
{
$count = $this->threads->count();
if ($this->hasSubforum()) {
foreach ($this->subforums as $subforum) {
$count += $subforum->countThreads();
}
}
return $count;
}
如果确实希望将其作为参数传递,那么正确的方法是将其作为模型外的服务写入