peewee rba c таблицы многие ко многим запросам - PullRequest
0 голосов
/ 18 июня 2020

Вопрос включает в себя дизайн пяти таблиц rba c, а именно User, UserRole, Role, RolePermission, Permission (Mysql). Я хотел бы знать, как запрашивать пользователей, у которых есть (все) указанные разрешения, с помощью peewee.

Прямо сейчас я просто выполняю несколько запросов и получаю их пересечение:

u1 = User.select().join(UserRole).join(Role).join(RolePermission).join(Permission).where(
    Permission.permission_type == 1)
u2 = User.select().join(UserRole).join(Role).join(RolePermission).join(Permission).where(
    Permission.permission_type == 2)
u3 = User.select().join(UserRole).join(Role).join(RolePermission).join(Permission).where(
    Permission.permission_type == 3)
result = set(u1).intersection(set(u2).intersection(set(u3)))

1 Ответ

0 голосов
/ 18 июня 2020

Вы можете присоединиться к тому месту, где тип разрешения находится в данном списке, а затем суммировать количество совпадений с помощью GROUP BY, а затем отфильтровать все совпадения с помощью HAVING.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...