如何使用单次Eloquent查询获取数据库表的多个总和统计结果
Laravel Eloquent 单次查询获取多个总和统计结果方案
完全可以实现,你可以借助selectRaw方法在单次查询中写入多个SUM聚合逻辑,避免两次独立查询的额外IO开销,具体实现代码如下:
核心查询代码
$statistics = Model::where('is_active', 1) ->selectRaw('SUM(clicks) as total_clicks, SUM(impressions) as total_impressions') ->first();
取值方式
$total_1 = $statistics->total_clicks; // 输出结果为2.000,与原有查询结果一致 $total_2 = $statistics->total_impressions; // 输出结果为8.000,与原有查询结果一致
补充说明
- 该方案本质是将两个聚合统计逻辑合并到同一条SQL语句中,仅触发一次数据库请求,数据量越大时性能优化效果越明显
- 额外的查询筛选条件可以直接在
where查询链中正常追加,和普通Eloquent查询的写法完全兼容 - 如果需要同时统计
is_active为0的对应字段总和,也可以在selectRaw中加入条件判断聚合,示例:SUM(CASE WHEN is_active = 0 THEN clicks ELSE 0 END) as inactive_clicks,即可在同一次查询中拿到多维度的统计结果
内容的提问来源于stack exchange,提问作者Maik Lowrey
相关产品推荐
相关产品推荐

