首页 > 解决方案 > Laravel 超级菜单循环

问题描述

我正在学习 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>

数据库字段

子类别查询输出

标签: laravelmegamenu

解决方案


这段代码:

$subcategories = App\Models\Category::where('parent_id',$item->id)->orderBy('name','ASC')->get();

不在 $categories 作为 $item 的循环内。因此,当它被执行时,它也会返回相同的类别集(因为 $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

它应该可以正常工作。


推荐阅读