laravel - 从数据表的关系中获取一条记录

标签 laravel datatable relationship laravel-8 eager-loading

我正在使用 Laravel v8

我有 3 个模型:家庭、家庭成员、家庭关系

Family table:

<表类="s-表"> <头> id 地址 创建时间 更新时间 <正文> 1 测试 空 空

Family Relationship table:

<表类="s-表"> <头> id 姓名 创建时间 更新时间 <正文> 1 头 空 空 2 配偶 空 空 3 child 空 空

Family Member table:

<表类="s-表"> <头> id 名字 姓氏 family_id family_relationship_id <正文> 1 约翰 母鹿 1 1 2 简 母鹿 1 2 3 最大 母鹿 1 3 4 玛丽 母鹿 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 显示家庭信息以及一家之主

我想显示idaddress 列,来自Family 模型以及first_namelast_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/

相关文章:

jquery - 如何将 DataTable 数据传递到 Bootstrap 模式

php - 如何检查bean是否相关

Laravel:路由在表单提交时返回 404 页面

php - Laravel 以干净的方式排除资源丰富的功能

mysql - 如何从 angularjs 接收 JSON 数据到 laravel

ruby-on-rails - Rails has_many :through association

arrays - 如何在 iOS Swift 中的嵌套数组(对多关系)中根据条件过滤对象数组

php - Laravel - php artisan config :cache - [ReflectionException] Class cache. 商店不存在

javascript - DT 表中的 Shiny 小部件

c# - 如何通过在 DataTable 中给出列名来获取行值