Laravel选择计数

时间:2015-06-11 12:57:51

标签: php mysql laravel laravel-4 eloquent

我使用laravel 4.2, 我有一张名为pois的桌子,其中包含一些poi(poi =兴趣点),我还有一个名为stamps的第二个表,其中包含用户标记。

所以我希望拥有3个poi,用户拥有最大的邮票数量。 我的问题是我不知道如何使用laravel查询。 我使用sql请求得到了我的结果,但是这样做的好方法。 在这里我的SQL请求:

$pois = DB::select("SELECT *, (SELECT count(*) from stamps WHERE pois.id = stamps.poi_id) nbr_stamps FROM pois order by nbr_stamps DESC limit 3");

你能告诉我如何使用laravel查询吗?

2 个答案:

答案 0 :(得分:2)

您应该使用selectRaw()代替select(),并将查询的其他部分与相关方法分开:

$pois = DB::select(DB:raw("*, (SELECT count(*) from stamps WHERE pois.id = stamps.poi_id) nbr_stamps"))
    ->from('pois')
    ->orderBy('nbr_stamps', 'DESC')
    ->limit(3);

阅读Query Builder documentation

答案 1 :(得分:2)

@感谢limonte的文档链接,我找到了正确的方法来选择raw,这里是解决方案:

$pois = DB::table('pois')
        ->select(DB::raw("*, (SELECT count(*) from stamps WHERE pois.id = stamps.poi_id) nbr_stamps"))
        ->orderBy('nbr_stamps', 'DESC')
        ->take(3)
        ->get();

度过愉快的一天;)