使用 load() 嵌套预加载
nested eager-loading using load()
一个Post可以有很多评论。
一个评论可以有很多个赞。
当我显示 post 时,我会立即加载它的评论。对于这些评论中的每一个,我都想显示 post 的作者是否喜欢该评论这一事实。
所以我发现自己确实需要 load()
而不是再链接一个 with()
,因为我需要先检索 post 的作者 ID ($post->author->id
)。 post 的作者 ID 然后通过闭包向下传递。
尽管这实际上工作得很好(它确实是预加载),但我对我的控制器现在看起来多么丑陋感到非常恼火。
有没有办法 scope
a load()
,就像查询 scope
a with()
一样?
我想以一种优雅的方式将该块移动到特征中,而不是让它驻留在我的控制器中。
是的,我正打算将那个令人作呕的部分移到一个函数中,但我真的希望我可以保留 piping/chaining $post = Post::query()->...->findOrFail($id)->???...
下面附上截图。我在寻求指导。代码有效。
我把它移到一个 trait 的方法里。
一个Post可以有很多评论。
一个评论可以有很多个赞。
当我显示 post 时,我会立即加载它的评论。对于这些评论中的每一个,我都想显示 post 的作者是否喜欢该评论这一事实。
所以我发现自己确实需要 load()
而不是再链接一个 with()
,因为我需要先检索 post 的作者 ID ($post->author->id
)。 post 的作者 ID 然后通过闭包向下传递。
尽管这实际上工作得很好(它确实是预加载),但我对我的控制器现在看起来多么丑陋感到非常恼火。
有没有办法 scope
a load()
,就像查询 scope
a with()
一样?
我想以一种优雅的方式将该块移动到特征中,而不是让它驻留在我的控制器中。
是的,我正打算将那个令人作呕的部分移到一个函数中,但我真的希望我可以保留 piping/chaining $post = Post::query()->...->findOrFail($id)->???...
下面附上截图。我在寻求指导。代码有效。
我把它移到一个 trait 的方法里。