postgresql - 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 的问题,因为网格排序和分页无法成功工作。
需要一个建议,你如何解决这样的问题?
解决方案
推荐阅读
- c# - c#中字母数字字符串的正则表达式接受下划线和空格
- visual-studio - 无法加载 UI 卫星 dll 'FileTracker32UI.dll'
- amazon-web-services - Amazon EMR - 特定 EMR 版本的应用程序列表?
- sql - SELECT STUFF 重写为 Redshift
- r - 在 R 如何将绘图列表与另一个绘图组合并在单个窗口中显示
- cmd - Copying files with CMD
- android - Android api 28 夜间模式
- android - 在 Android 上使用 Google Smart Lock 启用自动登录
- java - GroupLayout - 简单的组件定位
- c# - Unity - 将对象移动到点