getAttribute('currency_code') ?? CurrencyAccessor::getDefaultCurrency(); if ($value !== null) { return CurrencyConverter::prepareForMutator($value, $currency_code); } return ''; } /** * @throws UnexpectedValueException */ public function set(Model $model, string $key, mixed $value, array $attributes): int { $currency_code = $model->getAttribute('currency_code') ?? CurrencyAccessor::getDefaultCurrency(); if (is_numeric($value)) { $value = (string) $value; } elseif (! is_string($value)) { throw new UnexpectedValueException('Expected string or numeric value for money cast'); } return CurrencyConverter::prepareForAccessor($value, $currency_code); } }