我有一個從數據庫加載菜單的項目。架構是第一我有頂級橫向菜單(管理員,設置,報告)模塊,然後子模塊左側垂直菜單標題(用戶,書籍)和最後一個是節點,當點擊子菜單(用戶管理,密碼重置,圖書大師,圖書清單)。在laravel中使用五個模型的雄辯映射表關係4
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,節點名稱,created_at,的updated_at
'submodule_node_mapping' - node_mapping_id ,menu_sub_module_id,menu_node_id,created_at,的updated_at
首先我得使用雄辯的關係,這樣的查詢結果中laravel 4:
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.
謝謝。它的工作 – devo 2013-04-29 03:11:14