我使用的是 laravel 4.2, 我有一个名为 pois 的表,其中包含一些 poi(poi = 兴趣点),我有另一个名为 stamps 的表,其中包含用户标记。
所以我想在用户拥有最多印章的地方拥有 3 个位置。 我的问题是我不知道如何使用 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 查询来做到这一点吗?
最佳答案
您应该使用 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);
关于php - Laravel 在选择中选择计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30781482/