Задать вопрос
@koshagoool
Backend Developer

Несколько типов аккаунтов, как лучше организовать на уровне таблицы/миграций?

У меня есть приложение, куда будут регаться разного типа аккаунты.
Три основных типа есть — заказчик, исполнитель, админ.

Заказчик может создать у себя аккаунт для своего менеджера. Просто покажу структуру примерную:

1. Заказчик;
1. Менеджер;
2. Исполнитель
3. Администратор
1. Контент-менеджер
2. Аудитор

Главных типов аккаунтов три, некоторые из них могут создавать другие аккаунты.
Тут сразу ясно что нужны пермишены и роли, я буду использовать laravel spatie, доступы можно делать по ролям, пермишенам, проблема не в этом.

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

Не делать же разные таблицы вроде AdminUser, ManagerUser, и прочее.
  • Вопрос задан
  • 210 просмотров
Подписаться 1 Простой 1 комментарий
Решения вопроса 2
usdglander
@usdglander
Yipee-ki-yay
Я, в подобных случаях, в таблицу user выношу только то что касается авторизации. А все дополнительные поля выношу в таблицы profile_*. В вашем случае profile_admin, profile_manager и т. д.
Ответ написан
Комментировать
dblearn94
@dblearn94
Sanjar Tolibjonov использовать "табличный ввод" (не знаю как он правильно называется)
Суть такова, что у вас есть отдельная таблица где хранятся поля и значения, которые привязаны к профилю, и вам не нужно добавлять кучу полей в конкретно таблицу с профилями.

типа:
profile_setting:
profile_id | name | value

ну и соответственно строите связи, и все, проблема решена
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Digiport
@Digiport
PHP рулит
Используйте MongoDb и будет вам счастье.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы