laravel withCount得到已被删除的喜欢

时间:2017-11-29 14:23:37

标签: php laravel

此功能无法计算已删除的帖子。它只是得到了总喜欢的数量,但忽略了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;
}

1 个答案:

答案 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();