首页 > 解决方案 > Datetime 可空字段存储 0000-00-00 00:00:00 在可空字段中,

问题描述

我正在使用 Laravel 5.6.12 和 MySQL

架构迁移代码

Schema::create('mytable', function (Blueprint $table) {
    $table->unsignedMediumInteger('ID')->autoIncrement();
    $table->datetime("Start_Date");
    $table->datetime("End_Date")->nullable()->default(null);
    $table->timestamps();
});

插入脚本

$MyModel = new MyModel();
$MyModel->Start_Date = \Carbon\Carbon::now();
$MyModel->End_Date = null;
$MyModel->save();

我还在数据库中为 End_Date 字段获得 0000-00-00 00:00:00。我希望它存储 null 而不是 0000-00-00 00:00:00

请建议

标签: laravel-5.5laravel-5.6

解决方案


有一件事情是肯定的。默认情况下,日期时间输入 0000-00-00 00:00:00,因为这是日期时间字段的默认值。您可以尝试的一件事是从迁移中删除“default->(null)”。为了确保一切正常,首先尝试控制器,因为它没有任何变化。如果失败,请尝试: $MyModel->End_Date = '0'; 看看这是否有效。

最后,确保你的模型中所有提到的字段都是 $fillable = []。

希望这可以帮助 :)


推荐阅读