定义雄辩的关系 - 获取最新的存档

时间:2018-03-23 16:49:13

标签: laravel eloquent

我将一组存档的模型放入每个模型的单独存档表中。我已经定义了从模型到它的档案的关系,如下所示......

public function archives()
{
    return $this->hasMany(ArchivedModel::class, 'original_id', 'id')
        ->orderBy('date_from', 'desc');
}

以上作品。我用......获得了预期的结果。

$model = Model::with('archives')->findOrFail(1)->first();

我还想定义一个与最新档案的关系 - 这将始终存在,我尝试过以下但没有运气......

public function mostRecentArchive()
{
    return $this->hasOne(ArchivedModel::class, 'original_id', 'id')
        ->orderBy('date_from', 'desc')
        ->first();
}

......我得到了

  

抛出BadMethodCallException并显示消息“调用未定义的方法Illuminate \ Database \ Query \ Builder :: addEagerConstraints()”

所以我的问题 -

如何定义与最新档案的关系?

任何指针都会受到欢迎!

2 个答案:

答案 0 :(得分:1)

public function mostRecentArchive()
{
    return $this->hasOne(ArchivedModel::class, 'original_id', 'id')
        ->orderBy('date_from', 'desc');

}

无需编写 - > first();在关系中

答案 1 :(得分:1)

远程第一()

public function mostRecentArchive()
{
    return $this->hasOne(ArchivedModel::class, 'original_id', 'id')
        ->orderBy('date_from', 'desc')
}