Php 帖子返回的次数与评论存在的次数相同。我怎样才能解决这个问题?
我正在使用lumen和Vuejs,并将我的“喜欢”和“评论”表与我的帖子表一起加入。喜欢的人没有问题,很好用。 但是,当我加入comments表时,返回帖子的次数与存在评论的次数相同Php 帖子返回的次数与评论存在的次数相同。我怎样才能解决这个问题?,php,laravel,vue.js,lumen,Php,Laravel,Vue.js,Lumen,我正在使用lumen和Vuejs,并将我的“喜欢”和“评论”表与我的帖子表一起加入。喜欢的人没有问题,很好用。 但是,当我加入comments表时,返回帖子的次数与存在评论的次数相同 if($request->limit == NULL){ $request->limit = 4; } $user_name= $request->username; $post_id = $request->id; $u
if($request->limit == NULL){
$request->limit = 4;
}
$user_name= $request->username;
$post_id = $request->id;
$user = User::where('username', $user_name)->first();
$post_query = Posts::leftJoin('likes', 'posts.id', '=', 'likes.post_id')
->leftJoin('comments', 'posts.id', '=', 'comments.post_id')
->selectRaw('posts.*, count(likes.post_id) as likes')
->selectRaw('posts.*, comments.comment as comment')
->where('posts.user_id', $user->id)
->groupBy('posts.id')
->groupBy('comments.id')
->orderBy('id', 'desc')
->limit($request->limit)
->get();
return response()->json($post_query);
我的代码输出为:
{
"id": 844,
"user_id": 221,
"content": "Das ist mein aller erster Post :) ",
"created_at": "2019-07-01 09:09:00",
"updated_at": "2019-07-01 09:09:00",
"likes": 1,
"comment": "Das ist der zweite Kommentar"
},
{
"id": 844,
"user_id": 221,
"content": "Das ist mein aller erster Post :) ",
"created_at": "2019-07-01 09:09:00",
"updated_at": "2019-07-01 09:09:00",
"likes": 1,
"comment": "das ist der dritte :) "
}
但我想做的是:
{
"id": 844,
"user_id": 221,
"content": "Das ist mein aller erster Post :) ",
"created_at": "2019-07-01 09:09:00",
"updated_at": "2019-07-01 09:09:00",
"likes": 1,
"comments": {
{
'username' : 'test',
'comment' : "Das ist der zweite Kommentar",
'created_at': 12312312
},
{
'username' : 'test',
'comment' : "Das ist der dritte :)",
'created_at': 12312312
}
}
}
你知道我该怎么做吗?你可以使用以下定义的雄辩: Post.php
class Post extends Model {
public function comments()
{
return $this->hasMany(Comment::class);
}
public function likes()
{
return $this->hasMany(Like::class);
}
}
然后在您的查询中:
$posts = Post
::with('comments') // Eager loading the 'comments' relationship
->withCount('likes') // Attaching a 'likes_count' to every Post object
->orderBy('id', 'desc')
->limit($request->limit)
->get(); // executing the query
这将输出如下结果:
{
"id": 844,
"user_id": 221,
"content": "Das ist mein aller erster Post :) ",
"created_at": "2019-07-01 09:09:00",
"updated_at": "2019-07-01 09:09:00",
"likes_count": 1,
"comments": {
{
'username' : 'test',
'comment' : "Das ist der zweite Kommentar",
'created_at': 12312312
},
{
'username' : 'test',
'comment' : "Das ist der dritte :)",
'created_at': 12312312
}
}
}
在文档中签入与此解决方案相关的主题: