Laravel Eloquent多层次自我加入

时间:2017-03-23 10:26:28

标签: php eloquent laravel-5.4

如何在laravel 5.4中进行多级自联接 我有这样的桌子。

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');
    }

它给我单早午餐,但我需要充满它们。


一些帮助。

1 个答案:

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