首页 > 解决方案 > YII2 计数和分组依据

问题描述

我有大约三张桌子

Roles => role_id, role_name, store_id

Stores => store_id, store_name

UserRoles => id, user_id, role_id

我需要为每个商店和角色找到有多少用户有权限

Sql(Postgre) 是

SELECT    Count(*), 
          store_name 
FROM      "roles" 
LEFT JOIN "user_roles" 
ON        "roles"."role_id" = "user_roles"."role_id" 
LEFT JOIN "locations" 
ON        "roles"."rol_loc_id" = "stores"."loc_id" 
GROUP BY  (roles.rol_id,store_id) 
order BY  roles.rol_id

现在在 Yii 我有这样的东西

$query = Roles::find()
             ->select('*')
             ->joinWith("userRoles")
             ->joinWith('store');

当我添加

         ->groupBy(['roles.role_id','store_id']) 

或者

         count() OR ->select(["count(*) as countUserForEachStore])

它不起作用,因为 sql 查询看起来像这样

          SELECT COUNT(*) FROM (SELECT '.....

所以我尝试使用 (new \yii\db\Query()) ,但在这种情况下我遇到了 ActiveDataProvider 的问题,因为网格排序和分页无法成功工作。

需要一个建议,你如何解决这样的问题?

标签: postgresqlgridviewyii2

解决方案


推荐阅读