#laravel #database-design #eloquent
#laravel #database-design #красноречивый
Вопрос:
Таблицы:
- (Group) {group_id}
- (User) {user_id}
- (Разрешение) {permission_id}
Я хочу установить разрешения, которые применяются к группе (всем пользователям) и конкретному пользователю (в группе). Смотрите ERD ниже.
Я мог бы, конечно, создать две таблицы:
- (Group_Permission) {group_id, permission_id}
- (Group_User_permissions) {group_id, permission_id, user_id разрешений_id}
Или я мог бы создать одну таблицу:
- (Group_User_permissions) {group_id, permission_id, user_id разрешений_id}
И добавьте всех пользователей, когда я обновлю разрешения для группы.
Интересно, есть ли более элегантное решение для этого в laravel
.
Ответ №1:
ИМХО, я бы создал эти отношения:
- Пользователь -> Многие ко многим -> Группа
- Группа -> Многие ко многим -> Разрешение
Таким образом, у пользователя есть много разрешений через его собственные группы.
В случае назначения разрешений непосредственно пользователю, вы можете определить группу с именем, равным имени пользователя, или что-то подобное, чтобы вы могли ограничить эту группу способом, доступным только этому пользователю.
Вы можете найти ссылки на взаимосвязи, используемые выше, в документации laravel.
Надеюсь, это могло бы помочь.
Комментарии:
1. Таким образом, вы не можете указать, у какого пользователя какие разрешения в какой группе, верно?