我正在学习laravel,并试图创建一个Megamenu。但是我可以调用家长菜单,我堆叠在第一个孩子和第二个孩子。
每个父级下都有相同的子级。
<div class="navbar-mega">
<div class="dropdown-mega">
@php
$categories = App\Models\Category::where('parent_id', 0)->orderBy('order_level','ASC')->get();
@endphp
@foreach ($categories as $item)
<button class="dropbtn-mega"> {{$item->id}}</button>
@endforeach
<div class="dropdown-content-mega">
<div class="row-mega">
@php
$subcategories = App\Models\Category::where('parent_id',
$item->id)->orderBy('name','ASC')->get();
@endphp
@foreach ($subcategories as $subcategory)
<div class="column-mega">
<h3>{{$subcategories}}</h3>
<a href=""></a>
</div>
@endforeach
</div>
</div>
</div>
</div>
发布于 2021-10-13 07:29:32
这段代码:
$subcategories = App\Models\Category::where('parent_id',$item->id)->orderBy('name','ASC')->get();
作为$item不在通过$categories的循环中。因此,当它被执行时,它还将返回相同的类别集(因为在代码中,$item在这一点上始终是相同的值。
将其放入循环中:
@foreach ($categories as $item)
<button class="dropbtn-mega"> {{$item->id}}</button>
<div class="dropdown-content-mega">
<div class="row-mega">
@php
$subcategories = App\Models\Category::where('parent_id',
$item->id)->orderBy('name','ASC')->get();
@endphp
@foreach ($subcategories as $subcategory)
<div class="column-mega">
<h3>{{$subcategories}}</h3>
<a href=""></a>
</div>
@endforeach
</div>
</div>
@endforeach
它应该工作得很好。
发布于 2021-10-13 07:30:27
你可以使用append来获取子类别,在你的类别模型中使用这个,
protected $appends = [
'sub_categories'
];
public function getSubCategoriesAttribute()
{
return Category::where('parent_id', $this->id)->orderBy('name','ASC')->get();
}
<div class="navbar-mega">
<div class="dropdown-mega">
@php
$categories = App\Models\Category::where('parent_id', 0)->orderBy('order_level','ASC')->get();
@endphp
@foreach ($categories as $category)
<button class="dropbtn-mega"> {{ $category->id }}</button>
@endforeach
<div class="dropdown-content-mega">
<div class="row-mega">
@foreach ($category->sub_categories as $subCategory)
<div class="column-mega">
<h3>{{ $subCategory->name }}</h3>
<a href=""></a>
</div>
@endforeach
</div>
</div>
</div>
</div>
发布于 2021-10-13 07:39:04
在控制器中使用以下代码的更好方法。并在模型中创建关系。
$categories = App\Models\Category::where('parent_id', 0)->orderBy('order_level','ASC')->get();
在模型中使用子父关系:
public function children()
{
return $this->hasMany(Category:Class,'parent_id');
}
并使用with
获取父子树
$categories = App\Models\Category::with('children)->where('parent_id', 0)->orderBy('order_level','ASC')->get();
您可以使用以下命令进行检查
dd($categories);
并且可以很容易地在上面使用循环。
https://stackoverflow.com/questions/69551191
复制相似问题