laravel 5.8 中无法获取和显示动态菜单的孙关系
Unable to get and display grandchild relationship for dynamic menu in laravel 5.8
我正在 laravel 中创建动态多级菜单,我能够获取父子关系并显示菜单,但如果关系再向下一级,则无法获取和显示。
请协助。
我的模特:
public function parent()
{
return $this->belongsTo('App\Menu', 'parent_id');
}
public function children()
{
return $this->hasMany('App\Menu', 'parent_id');
}
public function gchildren()
{
return $this->hasMany('App\Menu', 'parent_id');
}
我的导航视图:
<ul class="navbar-nav">
@foreach($menus as $menuItem)
@if( $menuItem->parent_id == 0 )
<li class="nav-item p-relative">
<a class ="nav-link" href="{{ $menuItem->children->isEmpty() ? $menuItem->url : "#" }}">
{{ $menuItem->title }}
@if( ! $menuItem->children->isEmpty() )
<i class="fas fa-chevron-down"></i>
@endif
</a>
@if( ! $menuItem->children->isEmpty() )
<ul class="dropdown-menu">
@foreach($menuItem->children as $subMenuItem)
@if( ! $subMenuItem->status == 0 )
<li class="nav-item">
<a class="nav-link" href="{{ $subMenuItem->url }}">{{ $subMenuItem->title }}</a>
@if( ! $menuItem->gchildren->isEmpty() )
<ul class="dropdown-menu">
@foreach($menuItem->gchildren as $gchildItem)
@if( ! $gchildItem->status == 0 )
<li class="nav-item">
<a class="nav-link" href="{{ $gchildItem->url }}">{{ $gchildItem->title }}</a>
</li>
@endif
@endforeach
</ul>
@endif
</li>
@endif
@endforeach
</ul>
@endif
</li>
@endif
@endforeach
</ul>
这就是我得到的:
上图中不应该有下一个下拉菜单。
在我的数据库中,父 ID 3 只有 2 个条目,它已经是一个父
已解决问题。
谢谢大家的评论。
删除了 gchildren
函数并将导航视图中的代码更改为:
<ul class="dropdown-menu">
@foreach($menuItem->children as $subMenuItem)
@if( ! $subMenuItem->status == 0 )
<li class="nav-item"><a class="nav-link" href="{{ $subMenuItem->url }}">{{ $subMenuItem->title }}</a>
@if( ! $subMenuItem->children->isEmpty() )
<ul class="dropdown-menu">
@foreach($subMenuItem->children as $childItem)
@if( ! $childItem->status == 0 )
<li class="nav-item"><a class="nav-link" href="{{ $childItem->url }}">{{ $childItem->title }}</a></li>
@endif
@endforeach
</ul>
@endif
</li>
@endif
@endforeach
</ul>
我正在 laravel 中创建动态多级菜单,我能够获取父子关系并显示菜单,但如果关系再向下一级,则无法获取和显示。
请协助。
我的模特:
public function parent()
{
return $this->belongsTo('App\Menu', 'parent_id');
}
public function children()
{
return $this->hasMany('App\Menu', 'parent_id');
}
public function gchildren()
{
return $this->hasMany('App\Menu', 'parent_id');
}
我的导航视图:
<ul class="navbar-nav">
@foreach($menus as $menuItem)
@if( $menuItem->parent_id == 0 )
<li class="nav-item p-relative">
<a class ="nav-link" href="{{ $menuItem->children->isEmpty() ? $menuItem->url : "#" }}">
{{ $menuItem->title }}
@if( ! $menuItem->children->isEmpty() )
<i class="fas fa-chevron-down"></i>
@endif
</a>
@if( ! $menuItem->children->isEmpty() )
<ul class="dropdown-menu">
@foreach($menuItem->children as $subMenuItem)
@if( ! $subMenuItem->status == 0 )
<li class="nav-item">
<a class="nav-link" href="{{ $subMenuItem->url }}">{{ $subMenuItem->title }}</a>
@if( ! $menuItem->gchildren->isEmpty() )
<ul class="dropdown-menu">
@foreach($menuItem->gchildren as $gchildItem)
@if( ! $gchildItem->status == 0 )
<li class="nav-item">
<a class="nav-link" href="{{ $gchildItem->url }}">{{ $gchildItem->title }}</a>
</li>
@endif
@endforeach
</ul>
@endif
</li>
@endif
@endforeach
</ul>
@endif
</li>
@endif
@endforeach
</ul>
这就是我得到的:
上图中不应该有下一个下拉菜单。
在我的数据库中,父 ID 3 只有 2 个条目,它已经是一个父
已解决问题。 谢谢大家的评论。
删除了 gchildren
函数并将导航视图中的代码更改为:
<ul class="dropdown-menu">
@foreach($menuItem->children as $subMenuItem)
@if( ! $subMenuItem->status == 0 )
<li class="nav-item"><a class="nav-link" href="{{ $subMenuItem->url }}">{{ $subMenuItem->title }}</a>
@if( ! $subMenuItem->children->isEmpty() )
<ul class="dropdown-menu">
@foreach($subMenuItem->children as $childItem)
@if( ! $childItem->status == 0 )
<li class="nav-item"><a class="nav-link" href="{{ $childItem->url }}">{{ $childItem->title }}</a></li>
@endif
@endforeach
</ul>
@endif
</li>
@endif
@endforeach
</ul>