Regrouper les utilisateurs (nombre total d'utilisateurs, utilisateurs administrateurs, opérateurs de contrôle, gardes) à l'aide de requêtes éloquentes
P粉026665919
P粉026665919 2024-04-05 12:11:26
0
1
431

J'ai une requête qui contient le nombre total d'utilisateurs dans 计算所有用户具有角色“admin”的用户总数具有角色“control_operator”的用户总数和具有角色“guard”.

La requête fonctionne, mais il y a un problème/bug que je n'arrive pas à comprendre.

Il y a actuellement 2 utilisateurs dans la base de données, dont un a super_admin 和 admin 角色,另一个具有 control_operator. L'affichage frontal est comme ceci :

Pourquoi y a-t-il 3 utilisateurs alors qu'il n'y en a que 2 ?

Voici ma requête

// 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();

P粉026665919
P粉026665919

répondre à tous(1)
P粉111227898
$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();
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal