【问题标题】:Laravel 5.7 - eager loading a relationship's relationshipLaravel 5.7 - 渴望加载关系的关系
【发布时间】:2019-06-19 17:47:38
【问题描述】:

如何解决这个问题?我试过这个:

return $this->hasMany(ResolutionLog::class, 'ant_id', 'id')->with('resolutionStatus');

并得到错误:

调用模型 [App\Models\ResolutionLog] 上的未定义关系 [resolutionLog]。

或者在修补程序中,我在获取 resolutionLog 集合并尝试访问 resolutionStatus 关系时遇到此错误:

带有消息“App/Models/ResolutionLog::r​​esolutionStatus 必须返回关系实例”的 LogicException。

这是ResolutionLog 模型上的resolutionStatus 关系:

ResolutionLog.php

public function resolutionStatus()
{
    $this->hasOne(ResolutionStatus::class, 'id', 'resolution_status_id');
}

以及ResolutionStatus 模型上的resolutionLog 关系:

ResolutionStatus.php

public function resolutionLog()
{
    return $this->hasMany(ResolutionLog::class, 'resolution_status_id', 'id');
}

ResolutionLogResolutionStatus 之间应该是一对多的关系。一个ResolutionStatus 可以有多个ResolutionLogs。

【问题讨论】:

    标签: laravel laravel-5 eloquent laravel-5.7


    【解决方案1】:

    你应该像这样返回关系:

    public function resolutionStatus()
    {
        // you forgot to return it
        return $this->hasOne(ResolutionStatus::class, 'id', 'resolution_status_id');
    }
    

    【讨论】:

    • 天哪!很好的收获:)
    猜你喜欢
    • 2014-02-24
    • 1970-01-01
    • 2019-07-26
    • 1970-01-01
    • 1970-01-01
    • 2016-08-18
    • 2012-09-08
    • 2020-05-10
    • 2014-04-19
    相关资源
    最近更新 更多