Php Laravel 7雄辩:模型上的方法refresh()忽略默认(嵌套)的即时加载

Php Laravel 7雄辩:模型上的方法refresh()忽略默认(嵌套)的即时加载,php,laravel,laravel-7,Php,Laravel,Laravel 7,我正在保存/更新模型,并使用刷新()方法输出新数据 Laravel的文件中说: 如果计划在使用save或saveMany方法后访问关系,则可能希望使用refresh方法重新加载模型及其关系 控制器 模型 在漫画模型中,我定义了默认的渴望加载: protected $with = ['series', 'series.publisher']; 这对于一个简单的GET方法来说是完美的。但是如果我保存模型并对其使用refresh(),则输出将丢失其关系 store()和update()方法的行为

我正在保存/更新模型,并使用刷新()方法输出新数据

Laravel的文件中说:

如果计划在使用save或saveMany方法后访问关系,则可能希望使用refresh方法重新加载模型及其关系

控制器 模型 在漫画模型中,我定义了默认的渴望加载:

  protected $with = ['series', 'series.publisher'];
这对于一个简单的GET方法来说是完美的。但是如果我保存模型并对其使用refresh(),则输出将丢失其关系

store()和update()方法的行为也不同。store()-方法与我无关。update()-方法只返回序列关系(而不是嵌套关系)

这是一个bug还是我在文档中遗漏了什么

谢谢

示例数据
这实际上是
刷新
工作原理的预期结果<代码>刷新仅重新加载已加载的关系。在第一个示例中,没有加载任何关系,因为该模型没有从数据库中检索到,它是您直接创建的全新模型实例。第二个示例很可能是一个路由模型绑定,其中模型已从数据库返回,并且由于您使用的是
受保护的$with
,因此它加载了这些关系,因此重新加载了这些关系。

这实际上是
刷新
的工作原理<代码>刷新仅重新加载已加载的关系。在第一个示例中,没有加载任何关系,因为该模型没有从数据库中检索到,它是您直接创建的全新模型实例。第二个示例很可能是一个路由模型绑定,其中模型已从数据库返回,并且由于您使用的是
protected$with
,因此它加载了这些关系,因此重新加载了这些关系。

好的,我理解的第一部分。但是为什么嵌套关系没有加载?因为它会重新加载为“this”模型加载的关系
publisher
位于
series
上,该型号不是正在重新加载的型号。。。当前模型不知道任何其他模型的其他情况,它只知道它的关系,嵌套关系意味着不同模型上的关系。。。当前模型只知道有一个名为
$relations
的数组,它为自己存储加载的关系。。。它没有跟踪任何其他模型加载了什么,这是我理解的第一部分。但是为什么嵌套关系没有加载?因为它会重新加载为“this”模型加载的关系
publisher
位于
series
上,该型号不是正在重新加载的型号。。。当前模型不知道任何其他模型的其他情况,它只知道它的关系,嵌套关系意味着不同模型上的关系。。。当前模型只知道有一个名为
$relations
的数组,它为自己存储加载的关系。。。它不跟踪任何其他型号已加载的内容。顺便说一句,您只需要
系列。publisher
,它必须加载
系列
才能加载
publisher
,因此,如果您有
系列,您无需指定它加载
系列。publisher
顺便说一句,您只需要
系列。publisher
,它必须加载
series
才能加载
publisher
,因此如果您有
series.publisher
  protected $with = ['series', 'series.publisher'];
{
"comic_id":21,
"series_id":5,
"comic_issue":"2",
"comic_name":"Test after 6",
"status_id":1,
"comic_rating":null,
"comic_release_date":"2015-09-26",
"comic_read_date":null,
"comic_summary":"Summary 5",
"created_at":"2020-08-07T17:28:14.000000Z",
"updated_at":"2020-08-08T17:14:16.000000Z",
"series":
    {
    "series_id":5,
    "series_name":"Assumenda consectetur.",
    "publisher_id":4,
    "release_date":null,
    "publisher":
        {
        "publisher_id":4,
        "publisher_name":"Aliquam earum."
        }
    }
}