在 Laravel 上为可为 null 的日期列设置自定义默认日期

Set a custom dafault date for a nullable date column on Laravel

我想在可为空的日期字段上设置默认日期 1900-01-01。

我试过了

$table->date('fecha_nacimiento')->nullable()
    ->default(\Carbon\Carbon::make('1900-01-01')->toDateTimeString());

还有

$table->date('fecha_nacimiento')->nullable()
    ->default(\Carbon\Carbon::make('1900-01-01'));

还有

$table->date('fecha_nacimiento')->nullable()->default('1900-01-01');

当我在未设置 HTML 日期输入的情况下从浏览器保存时,它将日期字段保存为 null

字段上的默认值仅在未分配任何值(甚至不分配 null)时适用。

空白值很可能来自表单的空白输入。此外,如果您像这样使用 eloquent 批量分配,

$model->fill($request->all());

在这种情况下,您的日期字段设置为空,您的插入语句将如下所示,

INSERT INTO table_name (fecha_nacimiento, ...)
VALUES (null, ...);