如何在Eloquent Query Builder(Laravel 4)中按“SUM”排序

时间:2013-12-20 05:39:18

标签: mysql sql laravel laravel-4 eloquent

我有一张桌子,与已被“喜欢”的艺术家有关系。即像这样的东西:

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

有表“艺术家”和“粉丝”,其中包含这些实体的信息。我想通过在Laravel 4中的Eloquent查询构建器中喜欢艺术家的用户的总和来排序查询的结果(即按计数对结果进行分组,然后通过count desc对它们进行排序)。我想提取艺术家的信息。

这就是我所拥有的:

$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;

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

1 个答案:

答案 0 :(得分:2)

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

$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;