Laravel急于加载优化注释问题

时间:2018-08-01 04:16:35

标签: php laravel eager-loading

所以我只是在急切地加载东西,我一直在检查我拉出了多少个Sql语句,我真的觉得我在这里确实行得通,但是我觉得我可以用更好的方式做到这一点渴望加载。有没有人有任何建议或一种阻止每个评论运行查询的方法?...

这里是我的控制器功能,称为 Show()

public function show($id)
{
    //
    $posts = Post::with(['user','comments'])->where('user_id', $id)->get();

    foreach($posts as $post) {
      echo "<hr /><h2>" . $post->title . "</h2>";
      echo "<p><u style='font-size: 0.8rem;'>By: ". $post->user->name ."</i></u> | <u style='font-size: 0.8rem;'>Date:" . $post->created_at->format('n-j-Y') . "</u>";
      echo "<br />" . $post->content . "</p><hr />";
      echo "<h3>Comments</h3>";
      if($post->comments->isNotEmpty()) {
        foreach($post->comments as $comment) {
          echo "<u>" . $comment->user->name . "</u><br />" . $comment->comment . "<br /><br />";
        }
      } else {
        echo "Sorry there are no comments yet.";
      }
    }
}

这是它提取并显示在我调用的页面上的数据。请记住,我知道我应该使用视图,但是我主要是为了学习而这样做。

  

posts中选择*,其中user_id =吗?

     

users中选择*,其中(?)中的usersid

     

选择comments。*,taggablespost_id作为pivot_post_id,   taggablestaggable_id作为pivot_taggable_id,   taggables中的taggable_typepivot_taggable_type作为comments的{​​{1}}   taggables上的内部联接commentsid = taggablestaggable_id   taggablespost_id在(?,?,?)中   taggablestaggable_type =吗?

帖子网页:


坏屁股标题

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

后退别名。既不合理又不合理。 Est delectus recusandae consectetur quia tempore。 mole虫和田鼠。


评论

  

users中选择*,其中usersid =吗?限制1

朱莉娅·曼特五世

这是一个随机的帖子评论,希望它能起作用。

  

users中选择*,其中usersid =吗?限制1

Moriah Mayer

这是另一个随机发表的评论,希望它能起作用。


新的PHP标题

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

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


评论

  

users中选择*,其中usersid =吗?限制1

蒂莫西·费伊DDS

这是一篇有趣的帖子。


Moriahs神奇帖子

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

在这里,我们将向您展示我们如何以思维定势去做这个项目,您可以从本文中学到很多东西。


评论

对不起,还没有评论。

1 个答案:

答案 0 :(得分:0)

您还需要急于加载与每个user相关的comment。您可以使用点符号来渴望加载嵌套关系:

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

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