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

Filament 3:如何在表格汇总器中获取行记录?

解决Filament 3表格Summarizer中$record为空的问题

问题本质

这是Filament组件的设计预期行为,并非bug:

  • formatStateUsing是表格的行级渲染回调,作用是处理单条数据的显示逻辑,所以会传入当前行的$record参数。
  • 而Summarizer是针对整个表格数据集的汇总工具,它的using闭包从设计上就不提供单行$record参数——你代码里手动添加的$record属于未定义参数,因此为空。

正确实现方式

如果只是对total字段求和,直接用Filament内置的sum汇总器即可,无需自定义闭包:

Tables\Columns\TextColumn::make('total')
    ->label('Total')
    ->summarize(Summarizer::make()->sum());

如果需要自定义汇总逻辑,using闭包的有效参数只有Table $table(用于获取整个表格的数据集),去掉多余的$record参数:

Tables\Columns\TextColumn::make('total')
    ->label('Total')
    ->summarize(Summarizer::make()
        ->using(function (Table $table) {
            return $table->getRecords()->sum('total');
        })
    );

核心逻辑区分

  • 行级处理(如formatStateUsing):聚焦单条数据,可获取当前行$record。
  • 全局汇总(如Summarizer):聚焦整个数据集,仅能获取表格/查询对象,无法拿到单行记录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 21:04:56