Php 从laravel中的数据库创建、排序菜单和子菜单
我正在尝试构建从数据库获取的菜单部分,我还有Php 从laravel中的数据库创建、排序菜单和子菜单,php,laravel,Php,Laravel,我正在尝试构建从数据库获取的菜单部分,我还有菜单和子菜单。我提到了一个名为parent\u id的列,如果NULL表示它是parent元素,如果存在任何id,则它是该菜单元素的id的子菜单。下面是我的桌子 /***************** Menu Elements Table ****************/ |id | name | link | parent_id | sort_id | _____________________________________
菜单
和子菜单
。我提到了一个名为parent\u id
的列,如果NULL
表示它是parent
元素,如果存在任何id
,则它是该菜单元素的id的子菜单
。下面是我的桌子
/***************** 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 |
菜单的格式如下:
<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>
我有点困惑如何做到这一点。帮帮我
谢谢您只需添加另一个orderBy()
:
更新
要在视图中执行此操作,我只需将您的查询更改为:
$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>
@foreach($menu\u elements->where('parent\u id',null)作为$parent\u项)
-
@php
$children=$menu\u elements->where('parent\u id',$parent\u item->id);
@endphp
@如果(!$children->isEmpty())
@foreach($children->sortBy('sort_id')作为$child)
@endforeach
@恩迪夫
@endforeach
如何在HTML
中实现它,因为在放置sub-nav
标记时这将很困难。您使用的是什么版本的Laravel?Laravel版本5.3
$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>