Я создаю ERD, который внедряю в Laravel.
У меня есть три объекта: Hiker
, HikeLeader
и социальные сети Influencer
.
Пользователь может зарегистрироваться как любой из вышеперечисленных трех типов. Тем не менее, Hiker
или HikeLeader
могут решить стать влиятельными лицами в дополнение к своим существующим ролям. Таким образом, они переключают кнопку в своем профиле и становятся Hiker
и Influencer
или HikeLeader
и Influencer
.
Это пример атрибутов:
Hiker:
profile_photo
HikeLeader:
logo
Influencer:
instagram_handle
Вот что я имею в виду для ERD:
Диаграмма ERD
Первая часть проста, так как User
будет иметь метод userable
для этого вопроса.
Так что User
будет выглядеть так:
User:
id
email
password
userable_id // this will be the id from the Hike, HikeLeader or Influencer tables.
userable_type // this will be class type Hike, HikeLeader or Influencer.
Если я принимаю решение стать влиятельным лицом:
Influencer:
instagram_handle
influencerable_id
influencerable_type
Это прекрасно работает. Тем не менее, он работает только в том случае, если существующие пользователи хотят стать влиятельными, так как influencerable_type
будет Hiker
или HikeLeader
, но НЕ, когда новый пользователь зарегистрируется, чтобы стать Influencer
и ничего не знает о пеших походах. Разве объект влияния не может трансформироваться в себя?