[英]Menu submenu from same table but before the sub menu there will be another group submenu from another table
This are the three table:这是三个表:
CREATE TABLE `application_default_permissions` (
`id` int(10) UNSIGNED NOT NULL,
`action_id` int(10) UNSIGNED DEFAULT NULL,
`role_id` int(10) UNSIGNED DEFAULT NULL,
`department_id` int(10) UNSIGNED DEFAULT NULL,
`is_active` int(11) DEFAULT 0,
`is_created` int(11) DEFAULT 0,
`is_edit` int(11) DEFAULT 0,
`is_delete` int(11) DEFAULT 0,
`is_view` int(11) DEFAULT 0,
`is_audit` int(11) DEFAULT 0,
`is_verify` int(11) DEFAULT 0,
`is_approved` int(11) DEFAULT 0,
`created_by` int(10) UNSIGNED DEFAULT NULL,
`created_at` timestamp NULL DEFAULT NULL,
`updated_by` int(10) UNSIGNED DEFAULT NULL,
`updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE `application_roles` (
`id` int(10) UNSIGNED NOT NULL,
`role_name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`is_active` tinyint(4) NOT NULL DEFAULT 1,
`created_by` int(10) UNSIGNED DEFAULT NULL,
`created_at` timestamp NULL DEFAULT NULL,
`updated_by` int(10) UNSIGNED DEFAULT NULL,
`updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE `application_security_actions` (
`id` int(10) UNSIGNED NOT NULL,
`parent_id` int(11) DEFAULT NULL,
`sub_parent_id` int(11) DEFAULT NULL,
`application_id` int(10) UNSIGNED DEFAULT NULL,
`department_id` int(10) UNSIGNED DEFAULT NULL,
`controller_name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`action_name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`menu_icon` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`display_name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`is_active` int(11) DEFAULT NULL,
`is_created` int(11) DEFAULT NULL,
`is_edit` int(11) DEFAULT NULL,
`is_delete` int(11) DEFAULT NULL,
`is_view` int(11) DEFAULT NULL,
`is_audit` int(11) DEFAULT NULL,
`is_verify` int(11) DEFAULT NULL,
`is_approved` int(11) DEFAULT NULL,
`created_by` int(10) UNSIGNED DEFAULT NULL,
`created_at` timestamp NULL DEFAULT NULL,
`updated_by` int(10) UNSIGNED DEFAULT NULL,
`updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
menu submenu:
$stmt = "
SELECT id
, parent_id
, display_name
FROM application_security_actions
where parent_id = 0
";
$con = mysqli_connect('localhost', 'root', '', 'mukit_kitchen_inventor');
$resultMainMenu = mysqli_query($con,$stmt) ;
while($row = mysqli_fetch_array($resultMainMenu)){
print_r($row['display_name'] . '<br />') ; // echo main menu
$resultSubmenu = mysqli_query($con,"
SELECT *
FROM application_security_actions
WHERE parent_id = " . $row['id'] );
if(mysqli_num_rows($resultSubmenu) >= 1){
while($rowSub = mysqli_fetch_array($resultSubmenu)){
print_r( ' -- ' . $rowSub['display_name'] . '<br />'); // echo sub menu
}
}
}
this code will show all menu submenu Output:此代码将显示所有菜单子菜单 Output:
IT Department IT部门
-- Application List -- 申请清单
-- Department Add -- 部门地址
-- Role Add -- 角色添加
Accounts帐户
-- Data Entry - 数据输入
Shipping船运
-- Data Entry - 数据输入
supper admin超级管理员
-- Data Entry - 数据输入
but i want this type of structure as output picture is given: enter image description here但我想要这种类型的结构,因为给出了 output 图片:在此处输入图片描述
i want it will show main menu first from application_security_actions table under that will show the role name for each role there will be show all submenu from application_default_permissions table我希望它首先显示 application_security_actions 表中的主菜单,然后显示每个角色的角色名称 将显示 application_default_permissions 表中的所有子菜单
i am having this issue but i cannot solve this problem.我有这个问题,但我无法解决这个问题。 if any one could help me.
如果有人可以帮助我。
Hope it will work希望它会起作用
SELECT d.id, d.role_name, d.display_name_id,d.display_name,d.parent_id, e.display_name AS menu_name FROM
(SELECT a.id, a.role_name, c.id AS display_name_id,c.display_name,c.parent_id FROM application_roles a
JOIN application_default_permissions b ON a.id = b.role_id
JOIN application_security_actions c ON b.action_id = c.id
GROUP BY id, role_name,display_name_id,display_name, parent_id) AS d
JOIN application_security_actions e ON e.id = d.parent_id
WHERE e.parent_id = 0 AND e.id != 0
GROUP BY id, role_name, display_name_id,display_name,parent_id,menu_name
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.