2017-03-23 8 views
0

laravelでマルチレベル自己結合を行う方法5.4
私はこのようなテーブルを持っています。Laravel Eloquentマルチレベル自己参加

ID name ParentId 
1  abc  0  
2  acd  1  
3  ads  1  
4  xyz  2  
5  xxy  2  
6  plm  3  
7  ytr  4  
8  lks  6 

は今、私は必要があります。
#私は、ID 1を呼び出す場合、それはそれの下で完全なツリーを返します。私は、それは完全なツリー私はこの

public function getParent() { 
     return $this->belongsTo(self::class, 'ParentId','id'); 
    } 

    public function getChild(){ 
     return $this->hasMany(self::class, 'ParentId','id'); 
    } 

その私に、単一のブランチを与えなかったが、私はそれらの完全な必要
#を返します空にそれを呼び出す場合
#。



一部のplzヘルプ。

+1

最後に私はそれをやりました。 私は再帰関数でgetChildを呼び出しました。 – Azad

+0

あなたはどのように解決するのですか、あなたは私のコードを見ることができますか? –

答えて

0
public function chartLedgre($headId) { 
    $mainHead = self::where('id',$headId)->get(); 
    if(count($mainHead[0]->childs) > 0){ 
     foreach ($mainHead[0]->childs as $child){ 
      if($child->chart_type == 'L'){ 
       $this->data[] = $child->id; 
      }else{ 
       $this->chartLedgre($child->id); 
      } 
     } 
    }else{ 
     if($mainHead[0]->chart_type == 'L'){ 
      $this->data[] = $mainHead[0]->id; 
     } 
    } 
    return $this->data; 
}