Laravel递归 - 在一个类中调用自己

时间:2016-05-07 20:29:30

标签: php laravel recursion

我目前的代码:

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

我该怎么做这个递归?谢谢!

1 个答案:

答案 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;
}

如果确实希望将其作为参数传递,那么正确的方法是将其作为模型外的服务写入