2017-12-22 24 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

私はこれらの2つの方法があります私のモデル:

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回です。

私のように動作する場合は、私のブレードに15時間foreachと書く必要があります。 foreachforeachの中に追加しなくても、データがなくなるまでwhileステートメントを書き込む方法はありますか?foreachなどの中にありますか?これは、再帰を行いますと、結果がないときに停止します

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

:でpartial.blade.phpを作成

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

答えて

2

これを行うには、部分的にブレードを使用することができますすべてget_sonsです。

関連する問題