从数据表的关系中获取一条记录
Fetch one record from relationship for Datatable
我正在使用 Laravel v8
我有 3 个模型:Family、FamilyMember、FamilyRelationship
Family table:
id
address
created_at
updated_at
1
test
NULL
NULL
Family Relationship table:
id
name
created_at
updated_at
1
Head
NULL
NULL
2
Spouse
NULL
NULL
3
Child
NULL
NULL
Family Member table:
id
first_name
last_name
family_id
family_relationship_id
1
John
Doe
1
1
2
Jane
Doe
1
2
3
Max
Doe
1
3
4
Mary
Doe
1
3
我在 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 显示家庭信息以及一家之主
我想显示来自 Family 模型和 [=44] 的 id 和 address 列=]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 v8
我有 3 个模型:Family、FamilyMember、FamilyRelationship
Family table:
id | address | created_at | updated_at |
---|---|---|---|
1 | test | NULL | NULL |
Family Relationship table:
id | name | created_at | updated_at |
---|---|---|---|
1 | Head | NULL | NULL |
2 | Spouse | NULL | NULL |
3 | Child | NULL | NULL |
Family Member table:
id | first_name | last_name | family_id | family_relationship_id |
---|---|---|---|---|
1 | John | Doe | 1 | 1 |
2 | Jane | Doe | 1 | 2 |
3 | Max | Doe | 1 | 3 |
4 | Mary | Doe | 1 | 3 |
我在 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 显示家庭信息以及一家之主
我想显示来自 Family 模型和 [=44] 的 id 和 address 列=]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
,将只取第一个结果...