Php 使用load()进行嵌套的即时加载

Php 使用load()进行嵌套的即时加载,php,laravel,eager-loading,Php,Laravel,Eager Loading,一篇帖子可以有很多评论 一条评论可以有很多喜欢的地方 当我显示一篇文章时,我急切地加载它的评论。对于这些评论中的每一条,我想展示一个事实,那就是文章的作者是否喜欢这些评论 因此,我发现自己确实需要加载(),而不是用()链接更多的,这一切都是因为我需要首先检索文章的作者id($post->author->id)。然后,文章的作者id通过闭包进入巢穴 尽管事实上,这确实非常有效(它确实可以快速加载),但我对我的控制器现在看起来有多难看感到非常恼火 有没有一种方法可以像使用()查询范围a那样加载()?

一篇帖子可以有很多评论

一条评论可以有很多喜欢的地方

当我显示一篇文章时,我急切地加载它的评论。对于这些评论中的每一条,我想展示一个事实,那就是文章的作者是否喜欢这些评论

因此,我发现自己确实需要
加载()
,而不是用()链接更多的
,这一切都是因为我需要首先检索文章的作者id(
$post->author->id
)。然后,文章的作者id通过闭包进入巢穴

尽管事实上,这确实非常有效(它确实可以快速加载),但我对我的控制器现在看起来有多难看感到非常恼火

有没有一种方法可以像使用()查询
范围
a
那样加载()
? 我想以一种优雅的方式将这一块移动到特征中,而不是让它驻留在我的控制器中。 是的,我正计划在一个函数中移动那个讨厌的部分,但我真的希望我能保持管道/链接
$post=post::query()->…->findOrFail($id)->?…

截图附在下面。我在寻求指导。代码是有效的


我将其移动到trait中的一个方法中


我将其移动到trait中的一个方法中