diff --git a/packages/tables/src/Actions/EditAction.php b/packages/tables/src/Actions/EditAction.php index 97e094e664..90f310e6ba 100644 --- a/packages/tables/src/Actions/EditAction.php +++ b/packages/tables/src/Actions/EditAction.php @@ -36,12 +36,34 @@ class EditAction extends Action $this->icon(FilamentIcon::resolve('actions::edit-action') ?? 'heroicon-m-pencil-square'); $this->fillForm(function (Model $record, Table $table): array { - if ($translatableContentDriver = $table->makeTranslatableContentDriver()) { + $translatableContentDriver = $table->makeTranslatableContentDriver(); + + if ($translatableContentDriver) { $data = $translatableContentDriver->getRecordAttributesToArray($record); } else { $data = $record->attributesToArray(); } + $relationship = $table->getRelationship(); + + if ($relationship instanceof BelongsToMany) { + $pivot = $record->getRelationValue($relationship->getPivotAccessor()); + + $pivotColumns = $relationship->getPivotColumns(); + + if ($translatableContentDriver) { + $data = [ + ...$data, + ...Arr::only($translatableContentDriver->getRecordAttributesToArray($pivot), $pivotColumns), + ]; + } else { + $data = [ + ...$data, + ...Arr::only($pivot->attributesToArray(), $pivotColumns), + ]; + } + } + if ($this->mutateRecordDataUsing) { $data = $this->evaluate($this->mutateRecordDataUsing, ['data' => $data]); }