Для ясности я сократил примеры кода до только то, что имеет отношение к контексту.
App/Models/Configuration.php
Код: Выделить всё
use Illuminate\Database\Eloquent\Model;
class Configuration extends Model
{
protected function casts(): array
{
return [
'value' => \App\Casts\ConfigValue::class,
];
}
}
Код: Выделить всё
use Illuminate\Contracts\Database\Eloquent\CastsAttributes;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Http\UploadedFile;
class ConfigValue implements CastsAttributes
{
public function set(Model $model, string $key, mixed $value, array $attributes): mixed
{
$saveable = $value instanceof UploadedFile ||
(isset($value[0]) && $value[0] instanceof UploadedFile);
echo 1; // Take note of this
return match (true) {
...// Other conditions
$saveable => $this->doUpload(UploadedFile|array $value),
...// Other conditions
default => (string) $value,
};
}
}

App/Controllers/ConfigController.php
Код: Выделить всё
$config = Configuration::where('key', $key)->first();
$config->value = $value;
$config->save();
Что я здесь делаю не так? п>
Подробнее здесь: https://stackoverflow.com/questions/789 ... tom-cast-r