Я сам столкнулся с этим.Загляните в файл app \ Http \ Kernel.php .Существует промежуточное программное обеспечение Laravel, которое преобразует ваши пустые входные данные в нулевые значения.Таким образом, даже если у вас правильно настроено массовое назначение и миграция по умолчанию равна 0, это промежуточное ПО изменяет значение до того, как оно достигнет этих точек.Код, который вы ищете, похож на:
protected $middleware = [
\Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
\Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
\App\Http\Middleware\TrimStrings::class,
\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class, // <<-- This one
];
Вы можете удалить его или оставить в нем и написать метод для компенсации всех входных данных.Я просто удалил это и затем установил мутатор, чтобы сделать то, что промежуточное программное обеспечение сделало для тех входов, которые я хотел бы обнулить.
HTH