schema([ Forms\Components\TextInput::make('lot_number') ->label('LOT-Nummer') ->required() ->unique(ignoreRecord: true) ->maxLength(255), Forms\Components\Select::make('recipe_id') ->label('Rezeptur') ->relationship('recipe', 'name') ->searchable() ->preload() ->required(), Forms\Components\DatePicker::make('produced_at') ->label('Produktionsdatum'), Forms\Components\DatePicker::make('expires_at') ->label('Mindesthaltbarkeitsdatum'), Forms\Components\Repeater::make('origins') ->label('Herkunft der Gewürze') ->relationship() ->schema([ Forms\Components\Select::make('spice_id') ->label('Gewürz') ->relationship('spice', 'name') ->searchable() ->preload() ->required(), Forms\Components\Select::make('supplier_id') ->label('Lieferant') ->relationship('supplier', 'name') ->searchable() ->preload() ->nullable(), Forms\Components\TextInput::make('origin_country') ->label('Herkunftsland') ->maxLength(100), Forms\Components\TextInput::make('farmer') ->label('Landwirt / Betrieb') ->maxLength(255), Forms\Components\Textarea::make('notes') ->label('Infos zum Gewürz') ->rows(2) ->columnSpanFull(), ]) ->columns(2) ->addActionLabel('Gewürz hinzufügen') ->columnSpanFull(), ]); } public function table(Table $table): Table { return $table ->recordTitleAttribute('lot_number') ->columns([ Tables\Columns\TextColumn::make('lot_number') ->label('LOT-Nummer') ->searchable() ->sortable(), Tables\Columns\TextColumn::make('recipe.name') ->label('Rezeptur'), Tables\Columns\TextColumn::make('produced_at') ->label('Produktion') ->date('d.m.Y') ->sortable(), Tables\Columns\TextColumn::make('expires_at') ->label('MHD') ->date('d.m.Y') ->sortable(), ]) ->defaultSort('produced_at', 'desc') ->actions([ Tables\Actions\EditAction::make(), Tables\Actions\DeleteAction::make(), ]) ->headerActions([ Tables\Actions\CreateAction::make(), ]); } }