Я извлекаю данные из двух таблиц, которые являются категориями и подкатегориями.
Категории cat_id
содержат внутри таблицы подкатегорий как внешний ключ.
Вот мой код из модели категории:
class Category extends Model { protected $table = 'categories'; public function subcategories() { return $this->hasMany(Subcategory::class, 'categories_id'); } }
Вот мой код из модели подкатегории:
class Subcategory extends Model { protected $table = 'sub_categories'; public function category() { return $this->belongsTo(Category::class, 'categories_id'); }
Вот как я извлекаю данные с моего контроллера:
$treeView = Category::with(['subcategories'])->get();
Вот как выглядит моя .blade.php
:
@foreach($treeView as $category) @if($category->has('subcategories')) <li class="treeview"> <a href="#"><i class="fa fa-link"></i> <span>{{ $category->category_name }}</span> <i class="fa fa-angle-left pull-right"></i></a> <ul class="treeview-menu"> @foreach($category->subcategories as $subcategory) <li class=""><a href="#">{{$subcategory->sub_category_name}}</a></li> @endforeach </ul> </li> @else <li><a href="#"><i class="fa fa-link"></i> <span>{{ $category->category_name }}</span></a></li> @endif @endforeach
Как и выше html-структуры: я собираюсь построить древовидное представление, если какая-либо категория имеет подкатегории, остальные показывают категорию без древовидного представления. Но я получаю все категории с или без подкатегорий внутри древовидной структуры. Может ли кто-нибудь предложить способ, пожалуйста …
Просто заверните вложенную ul в if if:
@if($category->subcategories->count()) <ul class="treeview-menu"> @foreach($category->subcategories as $subcategory) <li class=""><a href="#">{{$subcategory->sub_category_name}}</a></li> @endforeach </ul> @endif