首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel5.6急切地加载嵌套关系

Laravel5.6急切地加载嵌套关系
EN

Stack Overflow用户
提问于 2018-05-01 19:58:32
回答 1查看 293关注 0票数 0

我的模型关系如下:

Beneficiary has-many FamilyMembers

Earner is-a FamilyMember

简单地说,受益人是一家之主。有家庭成员,“其中一些人”被认为是“打工仔”,因为他们给家庭带来了收入。

代码语言:javascript
复制
Beneficiary {id, name}
FamilyMember {beneficiary_id, id, name}

我把这个建模为:

代码语言:javascript
复制
Beneficiary hasMany FamilyMember
FamilyMember belongsTo Beneficiary
Earner hasOne FamilyMember <-- but I think this is wrong

我的要求是获得收入者的姓名(收入者->会员->姓名)。

在我的控制器中,$beneficiary是可用的(implicit binding)。然后,我将家庭成员加载为:

代码语言:javascript
复制
$beneficiary->load(['familyMembers']);

我需要从会员模型中得到收入者的名单和收入者的名字。

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-02 09:21:15

好的,如果我做对了。

收入者是家庭成员,所以你不能做赚钱的人hasOne FamilyMember

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

因为您没有“打工仔”表,所以不需要一个名为Earner的模型

我有一个问题要澄清:受益人是家庭成员,而收入者也是家庭成员,对吗?

那么在我看来,你们的桌子是:

  • Families
  • Family_members
  • Beneficiaries

Families表中:一个家庭将只有一个id和一个name

Family_members表中: family_member将包含idnamefamily_idis_earner

Benficiaries表中:受益人将拥有idfamily_idfamily_member_id

因此,您可以控制Beneficiaries表中的family_idfamily_member_id合并的唯一记录,这意味着这个表将只保存每个家庭的受益人,而每个家庭在这个表中应该只有一个记录。

对于“打工仔”而言,布尔列is_earner将指示family_member是否为家庭赚钱,这样,每个家庭就可以有许多“打工仔”(这是有道理的)

如果你还有什么问题,或者我在你的问题上出了什么问题,请告诉我!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50123001

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档