具有关系的 Laravel 菜单和子菜单

问题描述 投票:0回答:0

我有 3 个表:菜单 - 子菜单 - 用户 当我用菜单创建子菜单关系时没有问题 当创建用户时,我选择用户可以在菜单导航中看到的菜单和子菜单

使用此代码获取菜单:

$user=User::where('id',Auth::user()->id)->first();
                $menus = $user->menu;
                $view->with('menus', $menus );
$user=User::where('id',Auth::user()->id)->first();
                $submenus = $user->submenu;

菜单正确显示,但我不知道如何显示子菜单(具有真正的父菜单和真正的用户)

迁移:

Schema::create('menus', function (Blueprint $table) {
            $table->id();
            $table->string('title');
            $table->timestamps();
        });

        Schema::create('menu_submenu', function(Blueprint $table) {
            $table->integer('menu_id')->unsigned();
            $table->integer('submenu_id')->unsigned();
            $table->primary(['menu_id', 'submenu_id']);
            $table->foreign('menu_id')->references('id')->on('menus')->onUpdate('cascade')->onDelete('cascade');
            $table->foreign('submenu_id')->references('id')->on('submenus')->onUpdate('cascade')->onDelete('cascade');
        });

        Schema::create('menu_user', function(Blueprint $table) {
            $table->integer('menu_id')->unsigned();
            $table->integer('user_id')->unsigned();
            $table->primary(['menu_id', 'user_id']);
            $table->foreign('menu_id')->references('id')->on('menus')->onUpdate('cascade')->onDelete('cascade');
            $table->foreign('user_id')->references('id')->on('users')->onUpdate('cascade')->onDelete('cascade');
        });

        Schema::create('submenu_user', function(Blueprint $table) {
            $table->integer('submenu_id')->unsigned();
            $table->integer('user_id')->unsigned();
            $table->primary(['submenu_id', 'user_id']);
            $table->foreign('submenu_id')->references('id')->on('submenus')->onUpdate('cascade')->onDelete('cascade');
            $table->foreign('user_id')->references('id')->on('users')->onUpdate('cascade')->onDelete('cascade');
        });

我可以正确显示菜单,但子菜单有问题

laravel dynamic menu relational-database submenu
© www.soinside.com 2019 - 2024. All rights reserved.