用户可以添加文章,其他用户可以按我的喜欢或不喜欢,而我需要的视图较少

例如:
文章(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();


我该如何订购?

最佳答案

您可以通过链接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();

08-25 11:30
查看更多