You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel中如何统计列相同值数据量及completed字段为1的总数

嘿,这两个都是开发中高频遇到的统计需求,我来给你拆解清楚~

问题1:如何统计数据表某一列中相同值对应的数据条数?

不管是原生SQL还是Laravel框架,核心思路都是分组(GROUP BY)+ 计数(COUNT):

原生SQL实现

假设我们有一张users表,想统计不同city值对应的用户数量,SQL语句可以这么写:

SELECT city, COUNT(*) AS total_count 
FROM users 
GROUP BY city;

这条语句会返回每个城市名称,以及该城市下的用户总数。

Laravel框架实现

用Laravel的查询构造器可以轻松实现同样的效果:

// 使用DB门面
$groupedCounts = DB::table('users')
    ->select('city', DB::raw('COUNT(*) as total_count'))
    ->groupBy('city')
    ->get();

// 返回的是集合,你可以这样遍历结果
foreach ($groupedCounts as $item) {
    echo "城市:{$item->city},用户数:{$item->total_count}";
}

如果你的数据是通过Eloquent模型操作的,写法也类似,把DB::table('users')换成对应的模型类(比如User::)就行。

问题2:Laravel中统计completed字段值为1的数据总数

这个需求更直接,Laravel提供了好几种简洁的写法,看你习惯用哪种:

方法1:查询构造器直接计数

// 替换成你的表名
$completedTotal = DB::table('tasks')
    ->where('completed', 1)
    ->count();

count()方法会直接返回符合条件的记录总数,非常直观。

方法2:Eloquent模型写法

如果你已经创建了对应的数据表模型(比如Task模型),可以直接用模型调用:

$completedTotal = Task::where('completed', 1)->count();

这种写法更符合Laravel的ORM风格,代码更简洁。

方法3:原生表达式计数(适合复杂场景)

如果需要和其他统计逻辑结合,也可以用selectRaw:

$completedTotal = DB::table('tasks')
    ->selectRaw('COUNT(*) as completed_total')
    ->where('completed', 1)
    ->value('completed_total');

value()方法会直接取出指定字段的值,不用再处理集合。

内容的提问来源于stack exchange,提问作者Success Ahon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 06:33:03