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

如何基于Laravel Filament构建含模型数组列的数据表?

解决Laravel Filament Table展示数组字段的问题

你的核心问题是当前代码把整个数组的键/值一次性返回给表格列,导致单行列显示数组字符串,而非拆分每行展示单个键值对。以下是修正方案:

1. 确保模型字段正确转换为数组

首先确认你的Check模型中已将result字段设置为数组类型,让Laravel自动处理JSON与数组的转换:

// App/Models/UptimeChecker/Check.php
protected $casts = [
    'result' => 'array',
];

2. 修改Livewire组件的数据源

原getTableQuery返回单个模型记录,导致表格仅一行。移除该方法,重写getTableRecords将数组字段拆分为多行数据集合:

// App/Http/Livewire/UptimeChecker/ListCheckResult.php
use Illuminate\Support\Collection;

protected function getTableRecords(): Collection
{
    // 将result数组转换为包含name和result键的对象集合
    return collect($this->record->result)->map(function ($value, $key) {
        return (object) [
            'name' => $key,
            'result' => $value,
        ];
    });
}

3. 简化表格列定义

现在可以直接基于集合中的字段定义列,无需使用getStateUsing:

protected function getTableColumns(): array
{
    return [
        TextColumn::make('name')
            ->label('Name'),
        TextColumn::make('result')
            ->label('Result'),
    ];
}

修改完成后,表格会自动生成对应数组键值对的多行数据,实现你期望的Name和Result两列展示效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 19:55:24