用户可以添加文章,其他用户可以按我的喜欢或不喜欢,而我需要的视图较少
例如:
文章(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();