Как создать отношения в Laravel с 3 отношениями в сводной таблице? - PullRequest
0 голосов
/ 20 октября 2018

У меня есть следующие таблицы в архитектуре БД:

  • пользователей (идентификатор, имя, фамилия)
  • команд (идентификатор, имя)
  • Роли (идентификатор, имя)
  • права доступа (идентификатор, имя)
  • team_role_permission (team_id, role_id, license_id)
  • team_user (user_id, team_id, role_id)

Моя цель - описать связь между командой, ролью и моделями разрешений.Я прочитал документацию по Laravel, и нет возможности использовать сводную таблицу с тремя связями.На самом деле, я буду использовать только 3 отношения:

  • В каких командах игрок и какова его роль в каждой команде (метод teams в модели User/Player)
  • Какие игроки в команде и каковы их роли (метод players в Team модели)

Но я не понимаю, как использовать это с отношениями Laravel?

Таблица team_role_permission и ее отношения должны быть, потому что создатель команды должен иметь возможность редактировать разрешения для своей (каждой) команды вручную.

1 Ответ

0 голосов
/ 20 октября 2018

возможным решением может быть сохранение вручную в сводной таблице.Вы должны создать модель для своей сводной таблицы.

$team = Team::create();
$role = Role::create();
$permission = Permission::create();

$pivot = new TeamRolePermission();
$pivot['team_id'] = $team->id;
$pivot['role_id'] = $role->id;
$pivot['permission_id'] = $permission->id;
$pivot->save();
...