YII2计数和分组依据

时间:2018-06-20 10:43:32

标签: postgresql gridview 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']) 

OR

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

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

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

因此,我尝试使用(new \ yii \ db \ Query()),但是在那种情况下,我对ActiveDataProvider遇到了问题,因为网格排序和分页无法成功进行。

需要建议,如何解决此类问题?

0 个答案:

没有答案