从Laravel数据透视表中的额外外键获取集合

时间:2019-05-09 12:47:40

标签: laravel laravel-5 eloquent

共有3个实体:

  • 备忘录
  • 外国公民
  • 外国公民修订

这是关键关系:

// Memo belongsToMany ForeignCitizen
public function foreignCitizens()
{
    return $this->belongsToMany(ForeignCitizen::class)
                ->withPivot('foreign_citizen_revision_id')
                ->withTrashed();
}

问题是,当我创建一个Memo时,其中包含许多外国公民,并且每个外国公民都有许多修订版本。因此,我还存储了创建Memo的修订版ID。

例如,如果一个公民有5个修订版本,而我创建了一个新的Memo,它将与第五个修订版本下的一个公民建立联系。

一切正常,但这是问题:

如何获得类似$memo->foreignCitizenRevisions的信息?我可以进行一些手动数据库查询,但是我希望使用Eloquent来获取每个备忘的修订集。

以下是数据透视表的外观:

enter image description here

1 个答案:

答案 0 :(得分:0)

尝试

Memo::with(foreignCitizens => function ($query) {
$query->max('updated_at')->groupBy('foreign_citizen_revision_id');
}])->get();