laravel雄辩嵌套SELECT语句
我使用Laravel与MySQL的雄辩。
我有三个表POSTS
,USERS
和COMMENTS
。我POST
和COMMENT
是一个一对多用下面的代码关系因此我获得评论特定POST
IDlaravel雄辩嵌套SELECT语句
$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
表)。
您首先需要在USERS中为COMMENTS创建一对多的关系(用户有很多评论)。
然后你已经有关系帖子有很多评论的关系。
所以,让我们使用嵌套预先加载
$post = Post::where('id', $id)->with('comments.user')->get();
return view('posts\single', ['post' => $post]);
现在
在刀片文件....
-
$post->comments
会给你某一职位的所有意见。 -
$post->comments->user
会给你发表评论的用户。
很好的解释!非常感谢Maulik。工作像魅力 –
欢迎:)你应该标记为答复,通过点击向下箭头下的勾号按钮。 –
这应该工作。请尝试以下操作:
$comment = Comment::where('post_id', $post->id)->with('user')->paginate(10);
不幸的是,在关键用户返回NULL为“user”=> NULL –
我错过了连接。这工作 非常感谢 –
请这个尝试 -
User::join('posts','posts.created_by','=','users.id')
->with('comment')
->where('posts.id' ,'=' ,$id)
->paginate(10);
希望这能对你有帮助。
使用'JOIN'? https://www.w3schools.com/sql/sql_join.asp – Markinson
你必须使用雄辩关系.. –