我正在尝试构建从数据库中提取的菜单部分,我也是menus
和sub menus
。我已经提到名为column
的{{1}},如果parent_id
表示它是NULL
元素,如果存在任何parent
则为id
特别是submenu
。以下是我的表
id of menu element
和菜单的格式如下:
/***************** Menu Elements Table ****************/
|id | name | link | parent_id | sort_id |
____________________________________________________
|1 | Home | home | NULL | NULL |
|2 | About Us | about-us | NULL | NULL |
|3 | Services | services | 2 | 2 |
|4 | Vision | vision | 2 | 1 |
|5 | Contact us | contact-us| NULL | NULL |
菜单也根据sort_id
排序直到现在我能够对菜单元素进行排序,但我希望排序为parent_id特定。
<ul id="main-nav">
<li class="menu-item"><a href="index">Home</a></li>
<li class="menu-item"><a href="about-us">About Us</a>
<ul class="sub-nav">
<li><a href="vision">Vision</a></li>
<li><a href="services">Services</a></li>
</li>
<li class="menu-item"><a href="contact-us">Contact us</a></li>
</ul>
我对如何实现这一点感到困惑。帮助我。
由于
答案 0 :(得分:0)
您只需添加其他orderBy()
:
$menu_elements = MenuElements::orderBy('parent_id', 'asc')->orderBy('sort_id', 'asc')->get()->all();
<强>更新强>
要在视图中执行此操作,我只需将您的查询更改为:
$menu_elements = MenuElements::all();
然后在你看来:
<ul id="main-nav">
@foreach($menu_elements->where('parent_id', null) as $parent_item)
<li class="menu-item">
<a href="{{ $parent_item->link }}">{{ $parent_item->name }}</a>
@php
$children = $menu_elements->where('parent_id', $parent_item->id);
@endphp
@if(!$children->isEmpty())
<ul class="sub-nav">
@foreach($children->sortBy('sort_id') as $child)
<li><a href="{{ $child->link }}">{{ $child->name }}</a></li>
@endforeach
</ul>
@endif
</li>
@endforeach
</ul>