mysql - 如何在 Eloquent Query Builder (Laravel 4) 中按 "SUM"排序

标签 mysql sql laravel laravel-4 eloquent

我有一张表与被“喜欢”的艺术家有关系。 IE。像这样:

artists_id   fan_id  
1            1
1            2
1            3
4            1
4            2

“艺术家”和“粉丝”表包含这些实体的信息。我想按照 Laravel 4 中 Eloquent 查询生成器中喜欢艺术家的用户总数来排序查询结果(即按计数对结果进行分组,然后按计数降序排序)。我想提取艺术家信息。

这是我的:

$artists_most_popular = DB::table('artists')
                        ->join('fanartists', 'artists.id', '=', 'fanartists.artist_id')
                        ->orderBy('sum('fanartists.fan_id')')
                        ->groupBy('artists.id')
                        ->take(50)
                        ->get();

        return $artists_most_popular;

我知道这是不对的,但我不知道如何以 Eloquent 方式构建它。有任何想法吗?谢谢。

最佳答案

orderBy 中尝试 DB::raw。所以你的例子是......

$artists_most_popular = DB::table('artists')
                    ->join('fanartists', 'artists.id', '=', 'fanartists.artist_id')
                    ->orderBy(DB::raw('sum(\'fanartists.fan_id\')'))
                    ->groupBy('artists.id')
                    ->take(50)
                    ->get();

return $artists_most_popular;

关于mysql - 如何在 Eloquent Query Builder (Laravel 4) 中按 "SUM"排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20697019/

相关文章:

mysql - case 表达式来更改列的值

SQL IsNumeric 函数

laravel - 如何使用模态 Laravel 5.8 更新特定行

mysql - 在Mysql中设置空间精度

mysql - 无法更新安全设置。用户 'root' @'localhost' 的访问被拒绝(使用密码 : YES)

mysql - SQL 内连接与计数

php - Laravel 查询生成器从 10 万多行中返回空行

database - 如何将 CodeIgniter 用户密码移动到 Laravel

mysql - 从 mysql 数据库获取 unix 时间戳并应用偏移量

mysql - 如何使用 SQL 有选择地从包含多个值(每个值均以逗号分隔)的列中删除特定值?