laravel表结构显示最喜欢的文章和较少的视图

时间:2017-09-17 14:54:29

标签: php mysql laravel

用户可以添加文章和其他用户可以喜欢或不喜欢我最喜欢的视图

示例: 文章(A)有500个观点,10个像 - 文章(B)有50个观点和10个喜欢  订单将是(B)而不是(A)

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

文章表:

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

喜欢桌子:

id | user_id | article_id | like_type | created_at | updated_at

查询以获得喜欢计数:

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

我该如何订购?

1 个答案:

答案 0 :(得分:0)

您可以通过链接orderBy来按照laravel中的多个列进行排序。

在您的情况下,例如,您将首先按" likes_count"降序(=最大的第一个),然后是视图升序(=最小的第一个,这是默认值)。

所以你会这样做:

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')->orderBy('views')
    ->get();