Filament Select Option
Could you kindly suggest an alternative approach that would be more effective than the current course of action? When I fetch the data it's weird as you can see the photo!

Forms\Components\Select::make('company_size')
->options([
'1_to_5' => '1 - 5',
'10_to_20' => '10 - 20',
'50_to_100' => '50 - 100',
'100_to_500' => '100 - 500',
'500_to_1000' => '500 - 1000',
'1000_and_more' => '1000+',
])
->label('Team Size')
->required(),match or an arraygetValues()?$job->company_size->descriptionmatcharraygetValues()Filament\Forms\Components\Select::isOptionDisabled(): Argument #2 ($label) must be of type string, array given, called in /var/www/html/storage/framework/views/1de72626fd42a8d8e29bb5f2fcead228.php on line 80Cannot construct an instance of TeamRange using the value (string) `10 - 50`. Possible values are [1_to_5, 10_to_20, 50_to_100, 100_to_500, 500_to_1000, 1000_and_more].dd($job->company_size->description)
// result
"10 - 50"$job->company_size->descriptionForms\Components\Select::make('company_size')
->options([
TeamRange::getValues()
])
->label('Team Size')
->required(),$options = TeamRange::getValues();
$teamSizeOptions = array_map(function ($value) {
return [
'value' => $value,
'label' => TeamRange::getDescription($value),
];
}, $options);Forms\Components\Select::make('company_size')
->options($teamSizeOptions)
->label('Team Size')
->required(),<?php declare(strict_types=1);
namespace App\Enums;
use BenSampo\Enum\Enum;
final class TeamRange extends Enum
{
const ONE_TO_FIVE = '1_to_5';
const TEN_TO_TWENTY = '10_to_20';
const FIFTY_TO_HUNDRED = '50_to_100';
const HUNDRED_TO_FIVE_HUNDRED = '100_to_500';
const FIVE_HUNDRED_TO_THOUSAND = '500_to_1000';
const THOUSAND_AND_MORE = '1000_and_more';
public static function getDescription($value): string
{
switch ($value) {
case self::ONE_TO_FIVE:
return '1 - 5';
case self::TEN_TO_TWENTY:
return '10 - 20';
case self::FIFTY_TO_HUNDRED:
return '50 - 100';
case self::HUNDRED_TO_FIVE_HUNDRED:
return '100 - 500';
case self::FIVE_HUNDRED_TO_THOUSAND:
return '500 - 1000';
case self::THOUSAND_AND_MORE:
return '1000+';
default:
return parent::getDescription($value);
}
}
} $teamSizeOptions = collect($options)
->mapWithKeys(fn ($value) => [$value => TeamRange::getDescription($value)])
->all();->options(collect(TeamRange::getValues())->mapWithKeys(fn ($value) => [$value => TeamRange::getDescription($value)])),<?php
namespace App\Enums;
enum TeamRange: int
{
case ONE_TO_FIVE = 1;
case TEN_TO_TWENTY = 2;
case FIFTY_TO_HUNDRED = 3;
case HUNDRED_TO_FIVE_HUNDRED = 4;
case FIVE_HUNDRED_TO_THOUSAND = 5;
case THOUSAND_AND_MORE = 6;
public function getName(): string
{
return match ($this) {
self::ONE_TO_FIVE => '1 - 5',
self::TEN_TO_TWENTY => '10 - 20',
self::FIFTY_TO_HUNDRED => '50 - 100',
self::HUNDRED_TO_FIVE_HUNDRED => '100 - 500',
self::FIVE_HUNDRED_TO_THOUSAND => '500 - 1000',
self::THOUSAND_AND_MORE => '1000+',
default => 'No team!',
};
}
}protected function getTeamRangeOptions(): array
{
return \Illuminate\Support\Arr::map(
TeamRange::cases(), fn($enum) => $enum->getName()
);
}Forms\Components\Select::make('company_size')
->options($this->getTeamRangeOptions())
->label('Team Size')
->required(),