php - Laravel 在选择中选择计数

标签 php mysql laravel laravel-4 eloquent

我使用的是 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);

阅读Query Builder documentation .

关于php - Laravel 在选择中选择计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30781482/

相关文章:

mysql - SQL脚本转换为MySQL

MySQL跟踪系统

PHP "with"关键字 - "with"有什么作用?

php - 从 phpmyadmin 导出的查询在 PHP 中使用 mysql_query() 不起作用

php - wpdb->prepare() 返回 NULL

php - 加入集合请求

php - #1093 - 您不能在 FROM 子句中指定要更新的目标表 'installments'

PHP ImageMagick setColorspace 不工作

Laravel 查询 - 提取 JSON 列中对象数组中的特定字段并计算

php - Laravel 使用 ORDER BY 时获取所有其他字段