Laravel多级菜单与排序

时间:2018-01-29 22:45:34

标签: laravel menu laravel-5.5

我需要你在laravel中创建的多级菜单的帮助,也需要排序的意见。 我有这样的数据库结构: enter image description here

structure_id是主键。 structure_name是一个名称,将显示在前端。 structure_url是网址,锚点将指向该网址。 module_id在这里无关紧要(需要我在app中使用)。 sort_position很重要。它是从1到x的整数。我将按此号码订购菜单项asc / desc。我还需要有一个改变顺序的意见(我想我能够自己编码......我希望)。我真的不知道,在子菜单中如何处理sort_position ... parent_id是一个属性,表示菜单项在另一个菜单项中有父项。因此,如果此值为0(如默认值),则该项目已启动。如果项目的parent_id是f.e。:2,则表示该项目属于structure_id = 2

我尝试了一些徒劳的实验,但我自己没有机会这样做。我是laravel的初学者,所以我希望有人能帮助我

1 个答案:

答案 0 :(得分:0)

以下是我用来获取多级菜单的步骤:

  

表"菜单"

id,title,order,parent_id

  

模型

class Menu extends Model
{
    public function children()
    {
        return $this->hasMany(self::class , 'parent_id', 'id')->orderBy('order');
    }
}
  

控制器

class MenuController extends Controller
{
    public function index()
    {
        $menus = Menu::where('parent_id', 0)->orderBy('order', 'ASC')->get();
        return view('menu', compact('menus'));
    }
}
  

查看

@foreach($menus as $menu)
    @foreach($menu->children => $child)
        <h4>{{ $child->title }}</h4>
    @endforeach
@endforeach