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

Laravel Filament中数据透视表列求和显示空白的解决方法

解决Filament表格中关联透视表sum列空白的问题

针对你遇到的问题,这里提供几种可行的解决办法:

方法1:对齐Filament自动生成的列别名

你手动指定的列名users_sum_users_workshopnum_attending和Filament实际生成的别名格式不匹配,调整列名以匹配自动生成的格式即可:

TextColumn::make('users_sum_user_workshop_num_attending')
    ->sum('users', 'user_workshop.num_attending')
    ->label('Sold'),

或者更简化,不提前指定列名,让Filament自动映射统计结果:

TextColumn::make('sold')
    ->sum('users', 'user_workshop.num_attending')
    ->label('Sold'),

方法2:在模型中定义统计访问器

在Workshop模型里添加一个计算属性的访问器,把统计逻辑封装在模型层:

// Workshop.php
public function getTotalSoldAttribute()
{
    return $this->users()->sum('user_workshop.num_attending');
}

然后在Filament表格中直接调用这个属性:

TextColumn::make('total_sold')
    ->label('Sold'),

方法3:手动在查询中指定sum别名

在Filament表格的查询构建器里,用withSum明确指定统计字段的别名,确保列名完全匹配:

public function table(Table $table): Table
{
    return $table
        ->query(
            Workshop::query()->withSum(
                'users as total_sold', 
                'user_workshop.num_attending'
            )
        )
        ->columns([
            TextColumn::make('total_sold')
                ->label('Sold'),
            // 其他表格列
        ]);
}

内容的提问来源于stack exchange,提问作者Terje Lundemo Tangen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 13:12:53