Я разрабатываю блог, используя Laravel, и пытаюсь использовать пакет BenSampo Enum. Кажется, все работает при сохранении сообщения в блоге, но проблема возникает при преобразовании поля post_status как целого числа. Он приводится как строка, хотя я специально установил приведение модели как целое число. Поэтому вместо этого я получаю следующий результат:
Невозможно создать экземпляр PostStatusEnum, используя значение (строка) 1
. Возможные значения: [0, 1, 2, 3, 4].
Я провел довольно много онлайн-исследований и нашел черту, которая гарантированно возвращает приведение в виде целого числа. Я изменил его для этой цели, и он действительно работает так, как задумано, но он сталкивается с чертой BenSampo \ Enum \ Traits \ CastsEnums.
При создании сообщения я прикрепляю статус через наблюдателя на основе определенного условие, оно не проходит через форму, поэтому я не могу его проверить (по крайней мере, пока не нашел способа). Я в основном хочу сделать $ post_status = $ post-> post_status на контроллере и получить тот, который был сохранен (или какой бы ни была модель в данный момент). Итак, вместо того, чтобы пытаться взломать этот пакет, я сейчас пытаюсь создать мутатор, чтобы гарантировать, что поле post_status будет сохранено как целое число для начала, но у меня также возникают некоторые трудности с этим. Код ниже, похоже, ничего не делает, что мне не хватает?
public function setPostStatusAttribute($value)
{
$this->attributes['post_status'] = integer($value);
}
Для справки, это то, что у меня есть в модели и миграции, также импортированы необходимые пространства имен:
protected $enumCasts = [
'post_status' => PostStatusEnum::class,
];
protected $casts = [
'post_status' => 'int', // I've also tried integer. Have also tried putting it above the
$enumCasts
];
//migration
$table->unsignedInteger('post_status'); //have also tried integer and tinyInteger.
Я также пробовал пакет Spat ie Enums с расширением Laravel, который возвращает значение как целое число, но также столкнулся с проблемами при попытке отобразить поле в методе show.