我有一个查询,其中计算所有用户,具有角色“admin”的用户总数,具有角色“control_operator”的用户总数和具有角色“guard”的用户总数。 p>
查询正在工作,但有一个我无法弄清楚的小故障/错误。
数据库中实际上有 2 个用户,其中一个具有 super_admin 和 admin 角色,另一个具有 control_operator。前端显示的是这样的:
为什么只有 2 个用户时却有 3 个用户?
这是我的查询
// Retrieve the counts of admins, users, control operators, and security guards
$countData = User::selectRaw('
SUM(CASE WHEN roles.name = "admin" THEN 1 ELSE 0 END) as totalAdmins,
COUNT(*) as totalUsers,
SUM(CASE WHEN roles.name = "control_operator" THEN 1 ELSE 0 END) as totalControl,
SUM(CASE WHEN roles.name = "security_guard" THEN 1 ELSE 0 END) as totalGuards
')->join('model_has_roles', 'users.id', '=', 'model_has_roles.model_id')
->join('roles', 'model_has_roles.role_id', '=', 'roles.id')
->first(); Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
$countData = User::selectRaw(' COUNT(DISTINCT users.id) as totalUsers, SUM(CASE WHEN roles.name = "admin" THEN 1 ELSE 0 END) as totalAdmins, SUM(CASE WHEN roles.name = "control_operator" THEN 1 ELSE 0 END) as totalControl, SUM(CASE WHEN roles.name = "security_guard" THEN 1 ELSE 0 END) as totalGuards ') ->join('model_has_roles', 'users.id', '=', 'model_has_roles.model_id') ->join('roles', 'model_has_roles.role_id', '=', 'roles.id') ->first();