При обращению к свойству, у которого есть cast, вызывается метод set. Если ли вариант исправить?

Да, в Laravel есть возможность изменить поведение при обращении к свойствам, у которых есть указанный cast. При обращении к таким свойствам вызывается метод set. Однако, если вы хотите изменить это поведение, вы можете переопределить метод set в соответствующем классе модели.

Для того чтобы изменить метод set, вам потребуется создать класс-наследник от класса модели (Eloquent Model) и переопределить метод set в этом классе-наследнике.

Вот пример, как это можно сделать:

use IlluminateDatabaseEloquentModel;

class MyModel extends Model
{
    // Переопределение метода set для свойств с cast
    public function setAttribute($key, $value)
    {
        // Проверяем, имеет ли свойство указанный cast
        if (isset($this->casts[$key])) {
            // Ваше измененное поведение при обращении к свойству с cast
            // здесь вы можете добавить свою обработку значения
            $processedValue = ... // ваш код обработки значения $value
            $this->attributes[$key] = $processedValue;
        } else {
            // Если свойство не имеет cast, используем стандартную реализацию
            parent::setAttribute($key, $value);
        }
    }
}

Затем вам необходимо использовать этот класс-наследник вместо базового класса модели:

$myModel = new MyModel();

Теперь, когда вы будете обращаться к свойствам с указанными cast, будет вызываться ваш переопределенный метод set. Вам нужно будет написать в нем нужное поведение и выполнить дополнительную обработку значения, если это необходимо. Если свойство не имеет cast, будет использоваться стандартное поведение родительского класса.

Таким образом, посредством переопределения метода set в классе-наследнике от модели Laravel, вы можете исправить поведение при обращении к свойствам, у которых указан cast.