Eager loading Laravel 5.6嵌套关系

Eager loading Laravel 5.6嵌套关系,eager-loading,laravel-5.6,Eager Loading,Laravel 5.6,我的模型关系如下所示: 受益人有许多家庭成员 Earner is-a FamilyMember 用通俗的英语说,受益人是一家之主。有家庭成员,“他们中的一些人”被视为收入者,因为他们为家庭带来收入 Beneficiary {id, name} FamilyMember {beneficiary_id, id, name} 我将其建模为: Beneficiary hasMany FamilyMember FamilyMember belongsTo Beneficiary Earner hasO

我的模型关系如下所示:

受益人有许多家庭成员

Earner is-a FamilyMember

用通俗的英语说,受益人是一家之主。有家庭成员,“他们中的一些人”被视为收入者,因为他们为家庭带来收入

Beneficiary {id, name}
FamilyMember {beneficiary_id, id, name}
我将其建模为:

Beneficiary hasMany FamilyMember
FamilyMember belongsTo Beneficiary
Earner hasOne FamilyMember <-- but I think this is wrong
我需要从会员模型中获取挣钱者名单和挣钱者姓名


我想不出正确的建模方法。如果有人能帮助我如何安排人际关系,那就太好了。

好吧,如果我做对了

挣钱的人是家庭成员,所以你不能做挣钱的人只有一个家庭成员

首先,简单地说,模型是数据库表的实现

因为您没有earners表,所以不需要名为
Earner

我有一个问题需要澄清: 受益人是家庭成员,而挣钱人也是家庭成员,对吗

那么在我看来,您的表格将是:

  • 系列
  • 家庭成员
  • 受益人
族中
表: 一个族只有一个
id
和一个
名称

家庭成员表中:
家庭成员将拥有
身份证
姓名
家庭身份证
是收入者

benficients
表格中: 受益人将拥有
身份证
家庭身份证
家庭成员身份证

因此,您可以控制在
受益人
表中,
家庭成员id
家庭成员id
的记录应该是唯一的,这意味着该表将只包含每个家庭的受益人,每个家庭在该表中应该只有一条记录

对于挣钱族,布尔列
is_earner
将指示家庭成员是否向家庭挣钱,这样,每个家庭将允许多个挣钱族(这是有意义的)


如果你有任何进一步的问题,或者如果我在你的问题中出错,请告诉我

是的,在会员表中保留一个标志以表明他是否是一个挣钱的人是一个好办法。我刚刚解释了一个场景,另外3个场景具有相同的功能,因此我也可以在那里做同样的事情。竖起大拇指接受你的指导(Y)
$beneficiary->load(['familyMembers']);