我正在使用 Laravel v8
我有 3 个模型:家庭、家庭成员、家庭关系
Family table:
Family Relationship table:
Family Member table:
我在 Family 模型中创建的关系为
public function members(){
return $this->hasMany(FamilyMember::class, 'family_id');
}
而Family Member模型中的Family Relationship关系为
public function familyrelationship()
{
return $this->belongsTo(FamilyRelationship::class, 'family_relationship_id');
}
我正在使用 Datatable 显示家庭信息以及一家之主
我想显示id 和address 列,来自Family 模型以及first_name 和last_name 来自家庭成员 模型,其中家庭成员关系是头。
应该如何继续建立关系以在也可搜索的数据表网格中仅显示户主详细信息?
使用 Eloquent JOIN 可以很容易地实现上述事情,但我想知道这是否可以使用 Laravel 提供的关系功能来实现。
最佳答案
您可以尝试将 whereHas 与 hasOne 混合,以建立新关系:
public function members(){
return $this->hasMany(FamilyMember::class, 'family_id');
}
//然后是你的新关系:
public function head(){
return $this->hasOne(FamilyMember::class, 'family_id')->whereHas('familyrelationship',function ($query){
$query->where('name','Head');
});
}
hasOne
,将只取第一个结果......
关于laravel - 从数据表的关系中获取一条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69881534/