我的模型关系如下:
Beneficiary has-many FamilyMembers
Earner is-a FamilyMember
用简单的英语,受益人是领导家庭的人。有家庭成员和'其中一些'被视为 Earners ,因为它们为家庭带来了收入。
Beneficiary {id, name}
FamilyMember {beneficiary_id, id, name}
我把它建模为:
Beneficiary hasMany FamilyMember
FamilyMember belongsTo Beneficiary
Earner hasOne FamilyMember <-- but I think this is wrong
我的要求是获取获奖者的名字(获奖者 - &gt;会员 - &gt;名称)。
在我的控制器中,$beneficiary
可用(implicit binding
)。然后我将家庭成员加载为:
$beneficiary->load(['familyMembers']);
我需要从会员模型中获取Earners列表和Earner的名称。
我无法想出一种正确的建模方法。如果有人可以帮助我如何安排关系,那就太棒了。
答案 0 :(得分:1)
好的,如果我做对了。
收入者是家庭成员,所以你不能做Earner hasOne FamilyMember
首先,简单来说,模型是数据库表的实现。
由于您没有收入表,因此不需要名为Earner
我有一个问题需要明确: 受益人是家庭成员,而且收入者也是家庭成员,对吗?
然后在我看来你的表格将是:
Families
Family_members
Beneficiaries
在Families
表中:
一个家庭只有id
和name
在Family_members
表中:
family_member将有id
,name
,family_id
,is_earner
在Benficiaries
表中:
受益人将拥有id
,family_id
,family_member_id
因此,您可以在Beneficiaries
表中控制family_id
和family_member_id
组合的唯一记录,表示此表仅包含每个家庭的受益人,每个家庭在这张表中只有1条记录。
对于收入者,布尔列is_earner
将指示family_member
是否为家庭赚钱,这样,每个家庭将允许许多收入者(这是有道理的)
如果您有任何其他问题,或者我的问题出了问题,请告诉我们!