【问题标题】:laravel table structure showing the most liked articles and less viewslaravel 表结构显示最喜欢的文章和较少的视图
【发布时间】:2017-09-17 14:54:28
【问题描述】:

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

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

如何订购?

【问题讨论】:

    标签: php mysql laravel


    【解决方案1】:

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

    【讨论】:

    • 如果文章 (A) 有 500 次浏览和 11 次喜欢,我试试 - 文章 (B) 有 50 次浏览和 10 次喜欢得到 A 因为 A 更喜欢它的错误,我需要 B 这里因为 A 有 2 % 喜欢,b 有 20% 喜欢
    • 这不是你在问题中描述的......你不能同时拥有它:首先拥有最大的喜欢,以及你在此处描述的情况。您可以尝试为订单创建某种公式而不是喜欢的数量,然后执行SUM(2*likes.like_type-1+articles.view/10) 之类的操作并使用它。
    猜你喜欢
    • 2012-05-16
    • 1970-01-01
    • 1970-01-01
    • 2012-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-04
    • 1970-01-01
    相关资源
    最近更新 更多