我有一个Laravel和Vue.js应用程序,我正在通过API将评论发送到帖子页面。现在,我想通过该API获得针对该帖子的评论,这是我尝试过的:
commentController
public function index(){
$comment = Comment::with('post')->get();
return new CommentResource($comment);
}
评论模型
public function post(){
return $this->belongsTo(Post::class);
}
postmodel
public function comments(){
return $this->hasMany(Comment::class);
}
这是我的Api路线
Route::resource('comment','CommentController');
最后是我击中
时得到的http://localhost:8000/api/comment
是所有评论,而不是属于特定帖子的评论
{
"data": [{
"id": 33,
"body": "a",
"user_id": 1,
"user_email": "a",
"user_name": "a",
"status": 0,
"post_id": 9,
"created_at": "2019-03-25 08:50:55",
"updated_at": "2019-03-25 08:50:55",
"post": null
}, {
"id": 32,
"body": "a",
"user_id": 1,
"user_email": "a",
"user_name": "a",
"status": 0,
"post_id": 9,
"created_at": "2019-03-25 08:50:55",
"updated_at": "2019-03-25 08:50:55",
"post": null
}, {
"id": 31,
"body": "a",
"user_id": 1,
"user_email": "a",
"user_name": "a",
"status": 0,
"post_id": 9,
"created_at": "2019-03-25 08:50:55",
"updated_at": "2019-03-25 08:50:55",
"post": null
}, {
"id": 30,
"body": "a",
"user_id": 1,
"user_email": "a",
"user_name": "a",
"status": 0,
"post_id": 1,
"created_at": "2019-03-25 08:50:55",
"updated_at": "2019-03-25 08:50:55",
"post": null
}]
}
有什么想法只将相关评论发送到特定帖子吗?
答案 0 :(得分:1)
您的人际关系似乎是正确的,应该能够将json结构的所有评论嵌套在一起,例如
<%@ page import="java.sql.Date" %>
<%@ page import="java.text.SimpleDateFormat" %>
<%@ page import="java.util.Locale" %>
<%@include file="../../../WEB-INF/jspf/mcre.jspf" %>
<%@include file="../../../WEB-INF/jspf/session.jspf"%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
</head>
<body>
<%
long fileID = Long.parseLong(request.getParameter("id"));
String uniquecode=request.getParameter("uniquecode");
String startdt=request.getParameter("startdate");
String enddate=request.getParameter("enddate");
int enablestatus= Integer.parseInt(request.getParameter("enable"));
fileFacade.insert_update(fileID,uniquecode,startdt,enddate,enablestatus);
%>
</body>
</html>
也许您应该检查数据库表结构和外键
答案 1 :(得分:1)
尝试以下代码,
我将您的控制器index()
功能更改为
use NorAm\UserManagement\Http\Requests\Request;
class myController{
public function index(Request $request){
$postId = $request->postId; // this should pass through you API.
$comment = Comment::with('post')->where('post_id',$postId)->get();
return new CommentResource($comment);
}
}
答案 2 :(得分:1)
在CommentResource.php中,您应该在可用时返回关系
return [
...
'post' => new PostResource($this->whenLoaded('post')),
...
];
答案 3 :(得分:1)
假设您的评论表中有post_id。因此,要获取与特定帖子相关的评论,您需要将post_id(需要评论的帖子)传递到您的位置。
因此查询将是:
Comment::with('post)->where('post_id',$postId)->get();
用于获取相关帖子的评论。
邮政模型的另一种方式:-
如果您要获取帖子,并且需要与帖子相关的评论(您的要求)。 然后 在模型中,使用
更改评论方法 public function comments(){
return $this->belongsToMany(Comment::class);
}
Post::with(comments)->get()
与此同时,您可以获取帖子以及评论