开始
概述
列字段(Column)类在 Filament\Tables\Columns 命名空间中。你可以将它们放到 $table->columns() 方法中:
use Filament\Tables\Table;
public function table(Table $table): Table
{
return $table
->columns([
// ...
]);
}
列字段可以使用静态 make() 方法创建,并传入其唯一名。列名应该对应于模型的字段或者访问器。你可以使用"点语法"在关联中访问字段。
use Filament\Tables\Columns\TextColumn;
TextColumn::make('title')
TextColumn::make('author.name')
可用列字段
Filament 带有两种主要类型的列 - 静态类型及可编辑类型。
静态列将数据展示给用户:
可编辑列允许用户不离开表格更新数据库中的数据:
你也可以创建自定义的列,按照你希望的方式展示数据。
设置标签
默认情况下,列的标签(显示于表头)是有列字段名生成。你可以使用 label() 方法自定义:
use Filament\Tables\Columns\TextColumn;
TextColumn::make('title')
->label('Post title')
可选地,调用 translateLabel() 方法,你可以[使用 Laravel 的本地化特性]自动翻译标签:
use Filament\Tables\Columns\TextColumn;
TextColumn::make('title')
->translateLabel() // Equivalent to `label(__('Title'))`
排序
字段可以是可排序的,通过点击列标签实现。要使列可排序,请使用 sortable 方法:
use Filament\Tables\Columns\TextColumn;
TextColumn::make('name')
->sortable()

如果你使用访问器字段,你可以传递数据库字段数组到 sortable() 用以排序:
use Filament\Tables\Columns\TextColumn;
TextColumn::make('full_name')
->sortable(['first_name', 'last_name'])
你也可以使用回调函数,自定义 排序应该如何应用到 Eloquent 查询中:
use Filament\Tables\Columns\TextColumn;
use Illuminate\Database\Eloquent\Builder;
TextColumn::make('full_name')
->sortable(query: function (Builder $query, string $direction): Builder {
return $query
->orderBy('last_name', $direction)
->orderBy('first_name', $direction);
})
默认排序
如果没有使用到其他排序,你可以使用 defaultSort() 方法,对表格进行默认排序:
use Filament\Tables\Table;
public function table(Table $table): Table
{
return $table
->columns([
// ...
])
->defaultSort('stock', 'desc');
}
