我有一个从数据库加载菜单的项目。架构首先是顶部水平菜单(管理、设置、报告)的模块,然后是左侧边栏垂直菜单标题(用户、书籍)的子模块,最后一个是节点,当单击子菜单时展开(用户管理、密码重置,书主,书单)。
Admin > Users > User Management
Admin > Books > Book Master
Settings > Users > Password Reset
Reports > Books > Book Lists
像这样,节点只会出现一次,模块和子模块将重复出现。
有五个表:menu_modules、menu_sub_modules、module_submodule_mapping、menu_nodes 和 submodule_node_mapping。
'menu_module 字段' - menu_module_id、module_name、created_at、updated_at
'menu_sub_modules' 字段 - menu_sub_module_id、sub_module_name、created_at、updated_at
'module_submodule_mapping' 字段 - sub_module_mapping_id、menu_module_id、menu_sub_module_id、created_at、updated_at
'menu_nodes' 字段 - menu_node_id、node_name、created_at、updated_at
'submodule_node_mapping' - node_mapping_id,menu_sub_module_id,menu_node_id,created_at,updated_at
首先,我必须在 laravel 4 中使用 eloquent 关系来获得这样的查询结果:
SELECT A.module_name,B.sub_module_name FROM menu_module A,menu_sub_modules B,module_submodule_mapping C WHERE A.menu_module_id = C.menu_module_id AND B.menu_sub_module_id = C.menu_sub_module_id
然后像这个查询的第二个结果:
SELECT A.node_name FROM menu_nodes A,submodule_node_mapping B WHERE A.menu_node_id = B.menu_node_id AND C.menu_sub_module_id = '1'
任何人都可以解释模型结构和方法以及如何获得结果。请注意,我使用的是自己的 id 字段,例如 menu_node_id,并且该项目位于 laravel 4 中。