Laravel 5.6 急切加载嵌套关系
Laravel 5.6 eager loading nested relationships
我的模型关系如下:
Beneficiary has-many FamilyMembers
Earner is-a FamilyMember
用简单的英语来说,受益人就是一家之主。有家庭成员,'some of them'被视为收入者,因为他们为家庭带来了收入。
Beneficiary {id, name}
FamilyMember {beneficiary_id, id, name}
我将其建模为:
Beneficiary hasMany FamilyMember
FamilyMember belongsTo Beneficiary
Earner hasOne FamilyMember <-- but I think this is wrong
我的要求是获取Earner的名字(Earner->Member->name)。
在我的控制器中,$beneficiary
可用 (implicit binding
)。然后我将家庭成员加载为:
$beneficiary->load(['familyMembers']);
我需要从会员模型中获取收入者列表和收入者姓名。
我想不出正确的建模方法。如果有人能帮我怎么安排关系就好了。
好的,如果我没猜错的话。
收入者是家庭成员,所以你不能做收入者有一个家庭成员
首先,简单来说,一个模型就是一个数据库的实现table。
既然你没有收入者table,那么就不需要一个叫做Earner
的模型
我有一个问题想弄清楚:
受益人是家庭成员,收入者也是家庭成员,对吗?
那么在我看来你的 table 将是:
Families
Family_members
Beneficiaries
在Families
table中:
一个家庭将只有一个 id
和一个 name
在Family_members
table中:
family_member 将有 id
、name
、family_id
、is_earner
在Benficiaries
table中:
受益人将有 id
、family_id
、family_member_id
因此,您可以控制在 Beneficiaries
table 中应该有 family_id
和 family_member_id
组合的唯一记录,这意味着此 table将只保留每个家庭的受益人,每个家庭在table.
中应该只有1条记录
对于挣钱者,布尔列is_earner
将指示 family_member
是否为家庭赚钱,这样一来,每个家庭将允许许多挣钱者(这是有道理的)
如果您还有其他问题或者我的问题有误,请告诉我!
我的模型关系如下:
Beneficiary has-many FamilyMembers
Earner is-a FamilyMember
用简单的英语来说,受益人就是一家之主。有家庭成员,'some of them'被视为收入者,因为他们为家庭带来了收入。
Beneficiary {id, name}
FamilyMember {beneficiary_id, id, name}
我将其建模为:
Beneficiary hasMany FamilyMember
FamilyMember belongsTo Beneficiary
Earner hasOne FamilyMember <-- but I think this is wrong
我的要求是获取Earner的名字(Earner->Member->name)。
在我的控制器中,$beneficiary
可用 (implicit binding
)。然后我将家庭成员加载为:
$beneficiary->load(['familyMembers']);
我需要从会员模型中获取收入者列表和收入者姓名。
我想不出正确的建模方法。如果有人能帮我怎么安排关系就好了。
好的,如果我没猜错的话。
收入者是家庭成员,所以你不能做收入者有一个家庭成员
首先,简单来说,一个模型就是一个数据库的实现table。
既然你没有收入者table,那么就不需要一个叫做Earner
我有一个问题想弄清楚: 受益人是家庭成员,收入者也是家庭成员,对吗?
那么在我看来你的 table 将是:
Families
Family_members
Beneficiaries
在Families
table中:
一个家庭将只有一个 id
和一个 name
在Family_members
table中:
family_member 将有 id
、name
、family_id
、is_earner
在Benficiaries
table中:
受益人将有 id
、family_id
、family_member_id
因此,您可以控制在 Beneficiaries
table 中应该有 family_id
和 family_member_id
组合的唯一记录,这意味着此 table将只保留每个家庭的受益人,每个家庭在table.
对于挣钱者,布尔列is_earner
将指示 family_member
是否为家庭赚钱,这样一来,每个家庭将允许许多挣钱者(这是有道理的)
如果您还有其他问题或者我的问题有误,请告诉我!