Как спроектировать много- и многократные отношения, объединенные в Laravel? - PullRequest
0 голосов
/ 02 марта 2019

Таблицы:

  • (группа) {идентификатор_группы}
  • (пользователь) {идентификатор_пользователя}
  • (разрешение) {разрешение_ид}

Я хочу установить разрешения, которые применяются к группе (всем пользователям) и конкретному пользователю (в группе).См. ERD ниже.

Я мог бы, конечно, создать две таблицы:

  • (Group_Permission) {group_id ,missions_id}
  • (Group_User_permissions) {group_id, license_id, user_id}

Или я мог бы создать одну таблицу:

  • (Group_User_permissions) {group_id, license_id, user_id}

И добавить всех пользователей, когда яобновить разрешения для группы.

Интересно, есть ли более элегантное решение для этого в laravel.

ERD

1 Ответ

0 голосов
/ 02 марта 2019

ИМХО, я бы создал эти отношения :

  1. Пользователь -> Многие ко многим -> Группа
  2. Группа -> Многие ко многим -> Разрешение

Таким образом, пользователь имеет много разрешений через свои собственные groups .

В случае назначения разрешений непосредственно пользователю вы можете определить группу с name , равным пользователюusername или что-то подобное, так что вы можете ограничить эту группу таким образом, чтобы ее мог использовать только этот пользователь.

Вы можете найти ссылку на отношения, использованные выше, в документации laravel .

Надеюсь, это поможет.

...