© 2026 Hedgehog Software, LLC

TwitterGitHubDiscord
More
CommunitiesDocsAboutTermsPrivacy
Search
Star
Setup for Free
FilamentF
Filament•13mo ago•
8 replies
demonshide

How to Edit the Data of a Repeater

How do I modify the data of a repeater? In my model, a category has subcategories, and a warehouse has locations.
For the form, I managed to load the subcategories based on the selected category and to load the locations after selecting the warehouse.
Then, a product has a subcategory (based on this, I get the category) and multiple locations (based on each location, I should get the warehouse). In the edit mode, I’ve already managed to load the category based on the subcategory, but I can’t load the warehouses based on the locations. How could I do that? Thanks in advance.

class ProductResource extends Resource {
  ...
  Select::make('category_id')...,
  Select::make('sub_category_id')...,
  Repeater::make('locations')
    ->schema([
      Select::make('warehouse_id'),
      Select::make('location_id'),
    ])...,
}

class EditProduct extends EditRecord {
  protected function fillForm(): void {
    $data = $this->getRecord()->attributesToArray();

    // WORKS:
    $product = $this->getRecord();
    $subCategory = $product->subCategory;
    $data['sub_category_id'] = $product->sub_category_id;
    $data['category_id'] = $subCategory->category_id;

    // DOESN'T WORK, I’ve been trying to edit the repeater data, but I can’t. Only the location data from the database is loaded (So, for now, only an ID is loaded in the locations, and the warehouse is left unselected), and it doesn’t consider my changes:
    $data['locations'] = [
        [
            'warehouse_id' => 1, // Random data for testing
            'location_id' => 10,
        ],
        [
            'warehouse_id' => 2,
            'location_id' => 20,
        ],
    ];

    $this->fillFormWithDataAndCallHooks($product, $data);
  }
}
class ProductResource extends Resource {
  ...
  Select::make('category_id')...,
  Select::make('sub_category_id')...,
  Repeater::make('locations')
    ->schema([
      Select::make('warehouse_id'),
      Select::make('location_id'),
    ])...,
}

class EditProduct extends EditRecord {
  protected function fillForm(): void {
    $data = $this->getRecord()->attributesToArray();

    // WORKS:
    $product = $this->getRecord();
    $subCategory = $product->subCategory;
    $data['sub_category_id'] = $product->sub_category_id;
    $data['category_id'] = $subCategory->category_id;

    // DOESN'T WORK, I’ve been trying to edit the repeater data, but I can’t. Only the location data from the database is loaded (So, for now, only an ID is loaded in the locations, and the warehouse is left unselected), and it doesn’t consider my changes:
    $data['locations'] = [
        [
            'warehouse_id' => 1, // Random data for testing
            'location_id' => 10,
        ],
        [
            'warehouse_id' => 2,
            'location_id' => 20,
        ],
    ];

    $this->fillFormWithDataAndCallHooks($product, $data);
  }
}
Filament banner
FilamentJoin
A powerful open source UI framework for Laravel • Build and ship admin panels & apps fast with Livewire
20,307Members
Resources
Was this page helpful?

Similar Threads

Recent Announcements

Similar Threads

How to mutate repeater data?
FilamentFFilament / ❓┊help
3y ago
How it the repeater data loaded?
FilamentFFilament / ❓┊help
13mo ago
how to display data edit
FilamentFFilament / ❓┊help
2mo ago
how to populate a repeater with existing data?
FilamentFFilament / ❓┊help
2y ago