2016-05-07 11 views
1

私の現在のコードの中で自分自身を呼び出す:私は現在、私のモデルの内部$thisとして「スレッド」をアクセスしていますがLaravel再帰 - クラス

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

。私は$subforumを渡す必要がありますが、どのようにクラスでそれを行うことができますか?私のコントローラで

、私は単純にやってる:

$forum = Forum::where('id', $id)->first(); 
$forum->countThreads(); 

どのように私はこれで再帰を行うことができますか?ありがとう!

答えて

2

あなたは*、あなたがサブフォーラムにcountThreadsメソッドを呼び出すことができます任意の引数を渡す必要はありません$subforum->countThreads()

あなたが本当に渡したい 場合
public function countThreads() 
{ 
    $count = $this->threads->count(); 
    if ($this->hasSubforum()) { 
     foreach ($this->subforums as $subforum) { 
      $count += $subforum->countThreads(); 
     } 
    } 

    return $count; 
} 

引数としてその中に、モデル外のサービスとして記述するのが正しい方法です