2
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();
});
をこのテーブルを持っており、これで私はこのようなツリーとしてデータを取得しながら:
私はこれらの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
と書く必要があります。 foreach
をforeach
の中に追加しなくても、データがなくなるまで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
: