gpt4 book ai didi

php - 如何使菜单和子菜单动态 Laravel

转载 作者:行者123 更新时间:2023-11-29 12:02:43 24 4
gpt4 key购买 nike

我想让菜单和子菜单动态。我用它们的链接制作了菜单,但无法制作子菜单,请帮助我我的数据库结构

表名:菜单

id              menu_name       url                timestamps

表格:子菜单

id      submenu_name       link      menu_id  timestamps

我的查询是这样的

public function menu()
{
$sql=\DB::table('menu')->rightjoin('sub_menu','menu.id','=','sub_menu.menu_id')
->select('submenu_name','link','url','menu_id','menu_name','menu.id')->get();
return view('products.show.menu',compact('sql'));
}

查看

<ul>    
@foreach($sql as $key => $nav)
@if($key > 0)
<li>
<a href="#">{{$nav->menu_name}}</a>
@if (count($nav->submenu_name) > 0 )
<ul>
@foreach($nav->submenu_name as $child)
<li><a href="#">{{$child->submenu_name}}</a></li>
@endforeach
@endif
</ul>
</li>
@endif
@endforeach
</ul>

最佳答案

您为这些表设置了模型吗?您的查询将为每个菜单/子菜单组合返回多行,这意味着您不能直接对其进行迭代。此处无需使用查询生成器。

假设您的模型设置如下(您需要检查关系中使用的命名空间):

class Menu extends Eloquent
{
protected $table = 'menu';

public function submenu()
{
return $this->hasMany('App\SubMenu');
}
}

class SubMenu extends Eloquent
{
protected $table = 'sub_menu';

public function menu()
{
return $this->belongsTo('App\Menu');
}
}

在您的 Controller 中,您可以执行以下操作:

public function menu()
{
$menu = Menu::with('submenu')->get();

return view('products.show.menu', compact('menu'));
}

那么在你看来:

<ul>
@foreach($menu as $menuItem)
<li>
{{ $menuItem->menu_name }}
@if( ! $menuItem->submenu->isEmpty())
<ul>
@foreach($menuItem->submenu as $subMenuItem)
<li>{{ $subMenuItem->submenu_name }}</li>
@endforeach
</ul>
@endif
</li>
@endforeach
</ul>

关于php - 如何使菜单和子菜单动态 Laravel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32095711/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com