我使用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查询吗?
答案 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);
答案 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();
度过愉快的一天;)