Ошибка Cannot instantiate enum при создании атрибута на поле бд
Есть колонка в бд screenshots_state и в моём случае я пытаюсь кастить её значение через enum, а также преобразовавать в то, что мне надо атрибутом при получении. Если использовать отдельно cast и отдельно атрибут, то всё работает (если один из я закомментирую), но если я использую и то и то, то получаю ошибку Cannot instantiate enum App\Enums\ScreenshotsState которую получаю от трейта HasAttribute.
Каст:
protected $casts = [
'screenshots_state' => ScreenshotsState::class,
];
enum ScreenshotsState: int
{
case ANY = -1;
case FORBIDDEN = 0;
case REQUIRED = 1;
case OPTIONAL = 2;
public function title(): string
{
return match ($this) {
self::ANY,
self::FORBIDDEN,
self::REQUIRED,
self::OPTIONAL => strtolower($this->name),
};
}
public function inherited(): bool
{
return match ($this) {
self::FORBIDDEN,
self::REQUIRED => true,
self::ANY,
self::OPTIONAL => false,
};
}
public static function tryFromString(string $value): ScreenshotsState
{
if (is_null($value)) {
return self::ANY;
}
foreach (self::cases() as $state) {
if ($state->title() === strtolower($value)) {
return $state;
}
}
return self::ANY;
}
public function toArray(): array
{
return [
'value' => $this->value,
'name' => $this->title(),
];
}
}
Я без понятия почему оно падает и что мне сделать чтобы это работало. Laravel 10
Источник: Stack Overflow на русском