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
相关产品推荐
相关产品推荐

