我正在构建一个将在Laravel中实现的ERD。
我有三个实体:Hiker
,HikeLeader
和社交媒体Influencer
。
用户可以注册以上三种类型中的任何一种。但是,Hiker
或HikeLeader
可能会决定成为现有角色之外的影响者。因此,他们在个人资料上切换了一个按钮,就变成了Hiker
和Influencer
或HikeLeader
和Influencer
。
这些是示例属性:
Hiker:
profile_photo
HikeLeader:
logo
Influencer:
instagram_handle
这就是我想到的ERD:
第一部分很简单,因为每个this问题的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
并且对远足一无所知。除非有影响力的对象能够变形为自身?