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

Laravel实现数据库唯一值统计并表格展示,解决stdClass::count()未定义方法报错

解决Laravel中统计唯一值数量并展示的问题

嘿,我来帮你搞定这个问题!你现在遇到的Call to undefined method stdClass::count()错误,是因为你在控制器里只拿到了去重后的name值,并没有提前统计好每个名字的数量,而视图里的$row是一个普通的stdClass对象,根本没有count()方法。

问题根源

你当前的控制器代码:

$usersList = DB::table('users')->distinct('name')->get('name');

这段代码只是从users表中取出了所有不重复的name值,返回的是包含name属性的对象集合,但每个对象里并没有数量信息。所以在视图里调用$row->count('name')自然会报错。

正确的解决方案

我们需要直接在数据库查询阶段就完成分组和统计,这样拿到的结果已经包含了每个名字对应的数量。修改你的控制器代码如下:

// 使用groupBy分组,同时统计每个分组的数量
$usersList = DB::table('users')
    ->selectRaw('name, count(*) as count') // 选择name字段,并用count(*)统计数量,别名count
    ->groupBy('name') // 按name字段分组
    ->get();

return view('dashboard', compact('usersList'));

这样执行查询后,$usersList里的每个对象都会包含name和count两个属性,正好对应你想要展示的内容。

修改视图代码

现在视图里只需要直接输出这两个属性即可,不需要再调用不存在的方法:

@foreach ($usersList as $row) 
<tr> 
<th scope="row">{{ $row->name }}</th> 
<td>{{ $row->count }}</td> 
</tr> 
@endforeach

验证效果

执行这段代码后,你会得到和目标一致的表格:

namecount
john2
smith1

这样就完美解决了你的统计和展示问题啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 14:33:11