Полиморфные отношения были бы способом пойти? - PullRequest
1 голос
/ 25 мая 2019

Я создаю приложение Laravel и должен решить, как настроить базу данных. У меня есть 4 типа пользователей: Admin, Coach, Player, Parent. Я использую инструмент проверки подлинности Laravel по умолчанию (потому что он выполняет свою работу, и мне это нравится), и, как вы знаете, он создает таблицу пользователей для обработки паролей, электронных писем и т. Д. Однако, каждый из моих четырех типов пользователей потребует других полей, и будет очень мало совпадений в том, что эти поля.

ПЛЮС, для типа «Игроки» в таблице игроков должны быть игроки, которые НЕ связаны с пользователем (если игрок в команде, но он не зарегистрировал учетную запись).

Я думал так: что, если я просто создаю новую таблицу для каждого типа пользователя, связываю ее с таблицей пользователей по умолчанию через полиморфные отношения один-к-одному и называю это днем? Я понимаю, что это было задано здесь ( Laravel: структура таблицы для нескольких типов пользователей, полиморфные отношения ), но в этом вопросе они лишь слегка касаются вопроса об аутентификации, и это своего рода большое дело для что я делаю.

Альтернатива, о которой я могу подумать (и я никогда не пробовал этого, но это звучит как кошмар, чтобы настроить), - так или иначе заставить Laravel начать помещать пароли и электронные письма в каждую из этих пользовательских таблиц, и затем, когда пользователь входит в систему, он либо должен указать свою роль (что будет отстой?), либо я перебираю каждую из таблиц, пока не обнаружим попадание. Или нет.

Дайте мне знать, что вы думаете. Я полагаю, что не может быть абсолютного «лучшего способа» сделать это, но я бы хотел получить мнения.

...