Laravel 灯丝,有什么方法可以改变表中的 TextColumn 值吗?

Ser*_*vic 4 php laravel laravel-filament

如何在具有hasMany关系的filament where表中仅获取一个值?

我有两个数据库表:

products

ID 存货单元
1 SKU_1
2 SKU_2

product_descriptions

ID 产品编号 翻译_id 姓名
1 1 1 欧宝
2 1 2 沃克斯豪尔

在我的产品模型中我有hasMany关系

public function productDescriptions(): HasMany
{
   return $this->hasMany(ProductDescription::class);
}
Run Code Online (Sandbox Code Playgroud)

当我这样做时Tables\Columns\TextColumn::make('productDescriptions.name'),它返回所有用逗号分隔的值。在我的例子中“欧宝,沃克斯豪尔”

有没有办法使用回调来操纵/改变返回值?假设只返回第一个值“Opel”?

小智 10

您可以使用计算状态

Tables\Columns\TextColumn::make('productDescriptions.name')
   ->getStateUsing( function (Model $record){
      return $record->productDescriptions()->first()?->name;
   });
Run Code Online (Sandbox Code Playgroud)