2017-12-22 8 views
2

에 내가무제한 트리 뷰의 foreach와 같은 테이블

Schema::create('categorys', function (Blueprint $table) { 
    $table->increments('id'); 
    $table->string('category_name',50); 
    $table->integer('category_id')->unsigned(); 
    $table->foreign('category_id')->references('id')->on('categorys');   
    $table->softDeletes(); 
    $table->timestamps(); 
}); 

을이 테이블이이와 나는이 같은 트리로 데이터를 얻을 때 :

enter image description here

나는이 두 가지 방법이 내 모델의 :

public function get_parent() 
{ 
    return $this->belongsTo('App\Category','id','category_id'); 
} 
public function get_sons() 
{ 
    return $this->hasMany('App\Category','id','category_id'); 
} 

내 블레이드에 이렇게 나는 이것을했다.

@foreach($categorys->where('category_id','=',null) as $category) 
    <a>{{$category->category_name}}</a> 
    @foreach($category->get_sons as $dd) 
     <a>{{$dd->category_name}}</a> 
     <br /> 
     @foreach($dd->get_sons as $cc) 
      <a>{{$cc->category_name}}</a> 
      <br /> 
     @endforeach 
    @endforeach 
    <br /> 
@endforeach 

이 경우 단지 3 배의 아들을 갖게됩니다. 때때로 12 번 15 번입니다.

이렇게 작동하면 foreach을 15 시간 내 블레이드에 써야합니다. foreachforeach 안에 넣지 않고도 데이터가 없을 때까지 while 문을 쓸 수 있습니까? foreach 등의 내부에 있습니까?

당신은이 작업을 수행하는 부분 블레이드를 사용할 수 있습니다

답변

2

:

@foreach($categorys->where('category_id','=',null) as $category) 
    @include('viewname.partial') 
@endforeach 

가있는 partial.blade.php 만들기 : 재귀를 만들 것입니다

<a>{{$category->category_name}}</a> 
@foreach($category->get_sons as $c) 
    @include('viewname.partial', [ 'category' => $c]) 
@endforeach 

이하고 결과가없는 경우 중지됩니다 모두 get_sons입니다.