用户可以添加文章和其他用户可以喜欢或不喜欢我最喜欢的视图
示例: 文章(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();
我该如何订购?
答案 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();