Ошибка Cannot instantiate enum при создании атрибута на поле бд

Рейтинг: 0Ответов: 0Опубликовано: 14.06.2023

Есть колонка в бд screenshots_state и в моём случае я пытаюсь кастить её значение через enum, а также преобразовавать в то, что мне надо атрибутом при получении. Если использовать отдельно cast и отдельно атрибут, то всё работает (если один из я закомментирую), но если я использую и то и то, то получаю ошибку Cannot instantiate enum App\Enums\ScreenshotsState которую получаю от трейта HasAttribute.
Каст:

protected $casts = [
   'screenshots_state' => ScreenshotsState::class,
];

Атрибут:
введите сюда описание изображения
Enum:

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

Ответы

Ответов пока нет.