Laravel 5.1'i kullanarak, bir MySQL kategorisi tablosundan bir menü listesi oluşturmaya çalışıyorum. Servis sağlayıcım veri döndürüyor, ancak foreach döngüsünde alt kategorileri nasıl oluşturacağımı anlamıyorum. Döngüyü gerçekleştirdiğimde, yalnızca alt sorgunun son satırı döndürülür. Herhangi bir rehberlik takdir edilecektir.Laravel ebeveynlerin çocuklarını aynı masada döndürüyor
kategori Tablo
id | cat_name | cat_parent_id
--- | --------------| -------------
1 | Parent Cat 1 | NULL
2 | Parent Cat 2 | NULL
3 | Child Cat 1 | 2
4 | Child Cat 2 | 2
5 | Parent Cat 3 | NULL
6 | Child Cat 3 | 5
istenen sonuç
Parent Cat 1
Parent Cat 2
Child Cat 1
Child Cat 2
Parent Cat 3
Child Cat 3
viewComposerServiceProvider.php
public function boot()
{
$this->composeTopCategoryNavigation();
$this->composeSubCategoryNavigation();
}
private function composeTopCategoryNavigation()
{
view()->composer('partials.header', function($view)
{
$view->with('top_cats', Category::whereNull('cat_parent_id')->orderBy('cat_name', 'asc')->get());
});
}
private function composeSubCategoryNavigation()
{
view()->composer('partials.header', function($view)
{
$view->with('sub_cats', Category::whereNotNull('cat_parent_id')->orderBy('cat_name', 'asc')->get());
});
}
başlık görünümü ne yaptığını tüm
<ul>
@foreach ($top_cats as $top_cat)
<?php $top_cat_slug = str_slug($top_cat->cat_name, "-"); ?>
<li>{{ $top_cat->cat_name }}
@foreach ($sub_cats as $sub_cat)
@if ($sub_cat->cat_parent_id === $top_cat->id)
<ul>
<li{{ $sub_cat->cat_name }}</li>
</ul>
@endif
@endforeach
</li>
@endforeach
</ul>