Php Laravel迫不及待的加载优化问题

Php Laravel迫不及待的加载优化问题,php,laravel,eager-loading,Php,Laravel,Eager Loading,所以我只是在胡乱处理急切加载的东西,我一直在检查我已经拉了多少Sql语句,我真的觉得我这里的东西可以工作,但我觉得我可以用一种更好的方式来进行急切加载。是否有人有任何建议或方法阻止每个评论运行查询 这是我的控制器函数,名为Show() 公共功能显示($id) { // $posts=Post::with(['user','comments'])->where('user_id',$id)->get(); foreach($posts作为$post){ echo““$post->title.”;

所以我只是在胡乱处理急切加载的东西,我一直在检查我已经拉了多少Sql语句,我真的觉得我这里的东西可以工作,但我觉得我可以用一种更好的方式来进行急切加载。是否有人有任何建议或方法阻止每个评论运行查询

这是我的控制器函数,名为Show()

公共功能显示($id)
{
//
$posts=Post::with(['user','comments'])->where('user_id',$id)->get();
foreach($posts作为$post){
echo“
“$post->title.”; echo“通过:“..post->user->name.”日期:“..post->created_at->format('n-j-Y')”; 回声“
“$post->content.”


”; 回应“评论”; 如果($post->comments->isNotEmpty()){ foreach($post->comments as$comment){ 回显“$comment->user->name.”
“$comment->comment.”
“; } }否则{ echo“抱歉,还没有评论。”; } } }
这是它提取并显示在我调用的页面上的数据。请记住,我知道我应该使用视图,但我这样做主要是为了学习

posts
中选择*其中
user\u id
=

从(?)中的
users
中选择*其中
users
id

选择
注释
*,
标记
post\u id
作为
pivot\u post\u id
taggables
taggable\u id
as
pivot\u taggable\u id
taggables
taggable\u type
as
pivot\u taggable\u type
from
comments
内部连接
taggables
on
comments
id
=
taggables
taggables\u id
其中,(?,?)和中的
taggables
post\u id
taggables
taggable\u type
=

发布网页:


糟糕的标题

作者:Moriah Mayer |日期:2018年7月30日

取消重复使用客户别名。在授权范围内的非理性。这是一种暂时的恢复。小动物和小动物


评论

users
中选择*其中
users
id
=?限制1

朱莉娅·曼特五世

这是一篇随机的帖子,希望能奏效

users
中选择*其中
users
id
=?限制1

莫里亚迈耶

这是另一篇随机的帖子,希望它能起作用


新的PHP标题

作者:Moriah Mayer |日期:2018年7月30日

这是我们在没有教程的情况下创建的第一个内容


评论

users
中选择*其中
users
id
=?限制1

蒂莫西·费伊

你在这里的帖子很有趣


莫里亚的精彩帖子

作者:Moriah Mayer |日期:2018年7月30日

在这里,我们将向你展示我们可以用我们对项目的想法做些什么。你可以从这篇文章中学到很多东西


评论


很抱歉,还没有评论。

您还需要立即加载与每个
评论相关的
用户
。可以使用点表示法加载嵌套关系:

$posts = Post::with(['user', 'comments.user'])->where('user_id', $id)->get();

现在,每个评论都将加载其用户,并且不会运行新的查询。

除了@patricus answer。。请不要使用控制器作为您的视图。非常感谢您的工作,我觉得自己很笨,尽管它在文档中是正确的lol。再次感谢您。我在帖子中还说,我只是出于学习的原因使用控制器作为视图。这不适用于真实世界的应用程序。
$posts = Post::with(['user', 'comments.user'])->where('user_id', $id)->get();