FilamentF
Filament3y ago
Remi

Repeater based on other iterations

I want to create a repeater that allows a user to attach multiple locations, but every locations only once.

so far i got this:
Forms\Components\Repeater::make('clientLocations')
                    ->label(__('Locations'))
                    ->live()
                    ->relationship()
                    ->orderColumn('order')
                    ->simple(
                        Forms\Components\Select::make('location_id')
                            ->live()
                            ->relationship('location', 'name')
                            ->required()
                    ),


This allows me to create multiple attachments, but i can attach every location multiple times.

i got this far, but this removes all the attached locations

Forms\Components\Repeater::make('clientLocations')
                    ->label(__('Locations'))
                    ->live()
                    ->relationship()
                    ->orderColumn('order')
                    ->simple(
                        Forms\Components\Select::make('location_id')
                            ->live()
                            ->relationship('location', 'name', function (Builder $query, Get $get) {
                                Log::info(json_encode($get('../../clientLocations')));
                                return $query->whereNotIn('id',array_column($get('../../clientLocations'), 'location_id'));
                            })
                            ->required()
                    ),
Was this page helpful?