根据用户"喜欢"查找最受欢迎的文章。并且"不喜欢"

时间:2017-09-17 12:20:10

标签: php mysql laravel

用户可以添加其他用户可以"喜欢"的文章。或者"不喜欢"。

我需要找到最受欢迎的文章,计算为喜欢减去不喜欢。例如,如果一篇文章有​​3个喜欢而且1个不喜欢,那么它应该被赋予2的流行度值。

这是我的数据库结构,我将它们连接在一起:

我的文章表:

id | user_id | title | description | views | created_at | updated_at

我喜欢的表:

id | user_id | article_id | like_type | created_at | updated_at

如何找到最受欢迎的文章?

1 个答案:

答案 0 :(得分:0)

你可以用一个简单的group by和order语句实现你所要求的东西,这样的东西应该有效:

return Article::select('title', DB::Raw('SUM(2*likes.like_type-1) as likes_count'))
    ->leftJoin('likes', 'likes.article_id', '=', 'articles.id')
    ->groupBy('articles.id')
    ->orderBy('likes_count', 'DESC')
    ->get();

我认为like_type是一个布尔表示0表示不喜欢或1表示喜欢 - 如果不是,则需要更改SUM语句。