Php Laravel迫不及待的加载优化问题
所以我只是在胡乱处理急切加载的东西,我一直在检查我已经拉了多少Sql语句,我真的觉得我这里的东西可以工作,但我觉得我可以用一种更好的方式来进行急切加载。是否有人有任何建议或方法阻止每个评论运行查询 这是我的控制器函数,名为Show()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.”;
公共功能显示($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
aspivot\u taggable\u id
,
taggables
taggable\u type
aspivot\u taggable\u type
fromcomments
内部连接taggables
oncomments
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();