我正在使用带有MySQL的Eloquent Laravel
我有三个表POSTS
,USERS
和COMMENTS
。我的POST
和COMMENT
属于一对多关系,因此我使用以下代码获取特定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
表)。
答案 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);
希望这对你有所帮助。