php - 如何使用 Laravel 创建多级动态菜单?
问题描述
我想在 laravel 中动态创建菜单和子菜单,我在 laravel 中有 2 个表,它们是:
我有的:
表名:modules
module_id module_name link order
1 menu1 xxxx 1
2 menu2 xxxx 2
3 menu3 xxxx 3
表名:menus
menu_id module_id parent_id menu_name link order
1 1 0 submenu1 xxxx 1
2 2 0 submenu1 xxxx 1
3 2 2 submenu2 xxxx 2
4 2 2 submenu3 xxxx 3
5 2 4 child1 xxxx 1
6 2 4 child2 xxxx 2
7 2 5 subchild1 xxxx 1
所以可能有N级子菜单。
我做了什么:
我创建模型之间的关系,例如:
class Modules extends Model
{
protected $table = 'modules';
protected $primaryKey = 'module_id';
protected $fillable = ['*'];
public function menuModels()
{
return $this->hasMany('App\Models\Menu', 'module_id');
}
}
class Menus extends Model
{
protected $table = 'menus';
protected $primaryKey = 'menu_id';
protected $fillable = ['*'];
public function menuModels()
{
return $this->belongsTo('App\Models\Modules', 'menus', 'module_id');
}
}
然后我获取如下数据:
$menuDatas = ModulesName::with('menuModels')->get()->toArray();
我得到了数据,但我面临的问题是子菜单应该进入 N 级菜单。
输出应该是这样的:
-menu1
-submenu1
-menu2
-submenu1
-submenu2
-submenu3
-child1
-subchild1
-child2
-menu3
如何以正确的方式获取数据并显示在视图中。
你们能帮帮我吗,我在这方面很挣扎。
提前致谢
解决方案
推荐阅读
- php - 在 Laravel 8.x 中使用切换按钮保存表单并将其添加到枚举表中
- node.js - 使用图像在 Firebase 存储上加载预览时出错 [从 Firebase Admin SDK 上传]
- windows - gcc -m32 不适用于 Windows 托管代理
- javascript - ReactJS:无法读取未定义的属性“映射”
- css - 如何隐藏/禁用 safari 的 ::marker 伪元素
- java - 如何以编程方式连接 Android 9 (api 28) 中的特定 Wi-Fi 网络
- apache-kafka - kafka ACL - 用于消费者证书主题 - 不起作用
- r - ggplot2 boxplot() 中的平线
- symfony - Symfony 5 - 检索特定实体的 UniqueEntity 名称
- r - 如何计算 data.table 中几个类别的平均值?