型号:
class Menu extends Model { protected $table = 'menus'; public function sub_menu(){ return $this->hasMany('App\Menu', 'parent_id'); } }
控制器:
class MenuController extends Controller { public function index() { $menus = Menu::where('parent_id', 0)->get(); return view('admin.menus.index',compact('menus')); } }
查看:
<ul>
@foreach($menus as $menu)
<li>{{ $menu->title }}
@if($menu->sub_menu->count() > 0)
<ul>
@foreach($menu->sub_menu as $sub)
<li{{ $sub->title }}</li>
@endforeach
</ul>
@endif
</li>
@endforeach
</ul>
表格结构:
---------------------------------------------------------------------- id | title | parent_id ---------------------------------------------------------------------- 1 | Home | 0 ---------------------------------------------------------------------- 2 | Product1 | 0 ---------------------------------------------------------------------- 3 | Product1.1 | 2 ---------------------------------------------------------------------- 4 | Product1.1.1 | 3 ---------------------------------------------------------------------- 5 | Product1.1.2 | 3 ----------------------------------------------------------------------
它仅显示2个级别,但我需要多个级别,请帮忙!
答案 0 :(得分:2)
您可以使用递归来尝试:
<ul>
@foreach($menus as $menu)
<li>
{{ $menu->title }}
@if($menu->sub_menu->count())
{!! view('admin.menus.index', ['menus' => $menu->sub_menu]) !!}
@endif
</li>
@endforeach
</ul>
当你的视图只有上述内容时,它会起作用,你创建了新的部分并递归调用它。
请注意,您可以使用递归以无限循环结束。