我有大约三个桌子
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遇到了问题,因为网格排序和分页无法成功进行。
需要建议,如何解决此类问题?