此功能无法计算已删除的帖子。它只是得到了总喜欢的数量,但忽略了deleted_at is = null
我为我的喜欢使用软删除。
我试图计算喜欢的帖子,其中的dele_at是==为null(意味着没有删除的喜欢)。
它似乎忽略了我所拥有的并且无论是否被软删除都得到所有喜欢。
这是我目前所拥有的。
public function getTotalLikes(Post $post, User $user)
{
$likes = Post::withCount('likes')->first();
if($likes->deleted_at != NULL){
return 'no likes';
}
else{
return $likes->count();
}
$response = new Response(json_encode($likes));
$response->headers->set('Content-Type', 'application/json');
return $response;
}
答案 0 :(得分:2)
尝试这种方法:
public function getTotalLikes(Post $post)
{
$likes = Like::where('post_id', $post->id)->get();
if($likes->count()){
return $likes->count();
}
return 'no likes';
}
在Js:
$scope.getLikecount = function(post){
$http.get('post/'+post.id+'/getTotalLikes').then(function(result){
console.log("likes:"+result.data);
});
};
在路线档案中:
Route::get('post/{post}/getTotalLikes', 'PostController@getTotalLikes');
关于laravel中软删除的附注:
当你做这样的事情时:
Like::where('post_id', $post->id)->get();
Laravel排除自动删除的,
如果您想要甚至已删除的,您可以添加withTrashed()
:
Like::withTrashed()->where('post_id', $post->id)->get();
如果您希望仅删除,请使用onlyTrashed()
:
Like::onlyTrashed()->where('post_id', $post->id)->get();