laravel eloquent嵌套SELECT语句

时间:2017-08-29 12:13:16

标签: php laravel laravel-5 laravel-5.2 laravel-5.3

我正在使用带有MySQL的Eloquent Laravel 我有三个表POSTSUSERSCOMMENTS。我的POSTCOMMENT属于一对多关系,因此我使用以下代码获取特定POST id的评论列表

$post =  Post::where('id', $id)->get();
$comment = Post::find($id)->comment()->paginate(10);       
return view('posts\single', ['post' => $post, 'comments' => $comment]);

现在我想从USER表中获取每个用户的详细信息。我不想使用foreach(),然后获取每个ID的详细信息。是否有任何方法可以通过一次调用获得所有评论(来自COMMENTS表),包括用户详细信息(来自USER表)。

3 个答案:

答案 0 :(得分:0)

这应该有效。请尝试以下方法:

$comment = Comment::where('post_id', $post->id)->with('user')->paginate(10); 

答案 1 :(得分:0)

首先需要在USERS和COMMENTS中创建一对多的关系(用户有很多评论)。

然后你已经有了关系帖子有很多评论关系。

所以,让我们使用Nested Eager Loading

$post =  Post::where('id', $id)->with('comments.user')->get();
return view('posts\single', ['post' => $post]);

现在在您的刀片文件中....

  • $post->comments会针对特定帖子提供所有评论。
  • $post->comments->user将为您发表评论的用户提供。

答案 2 :(得分:0)

请试试这个 -

User::join('posts','posts.created_by','=','users.id')
      ->with('comment')
      ->where('posts.id' ,'=' ,$id)
      ->paginate(10);

希望这对你有所帮助。