Как отобразить все категории, с подкатегорией, суб, суб (..) категории, у меня есть простая таблица:
и моя модель:
class Category extends Model
{
public $fillable = [
'parent_id',
'name',
'description'
];
public function parent()
{
return $this->belongsTo(Category::class, 'parent_id', 'id');
}
public function children()
{
return $this->hasMany(Category::class, 'parent_id', 'id');
}
}
Я хочу получить:
<ul>
<li>Category
<ul>
<li>Category 1.1</li>
<li>Category 1.2</li>
</ul>
</li>
(...)
</ul>
Этот практический подход работает для N количество категорий с N Число детей
Сначала создайте частичное представление category.blade.php
файл, который будет рекурсивно вызывать себя, чтобы загрузить своих детей
<li>
@if ($category->children()->count() > 0 )
<ul>
@foreach($category->children as $category)
@include('category', $category) //the magic is in here
@endforeach
</ul>
@endif
</li>
Затем в главном окне вы добавляете этот код, который рекурсивно загружает всех детей
<ul>
@foreach ($categories as $category)
@if($category->parent_id == 0 )
@include('category', $category)
@endif
@endforeach
</ul>
Других решений пока нет …