Laravel递归-在类中调用自己


Laravel recursion - calling itself in a class

我的当前代码:

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();

我如何用它进行递归?谢谢

您不需要传递任何参数*,可以在子论坛$subforum->countThreads() 上调用countThreads方法

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

如果真的想将其作为参数传入,正确的方法是将其作为模型之外的服务写入