Laravel 中的日期为 0000-00-00

Ken*_*ink 5 php mysql database laravel eloquent

我必须在现有(旧)数据库上构建 Laravel 应用程序。该数据库使用 0000-00-00 作为默认日期。我无法更改此设置,因为当前系统(也将保留)使用它来检查某些内容是否在无限时间内处于活动状态(例如:active_from0000-00-00 和active_till0000-00-00 表示它是始终处于活动状态)。

我想向现有表添加一列,因此我创建了一个迁移:add_columnname_to_tablename_tableup()在我做的函数中: $table->string('columnname'). 当我运行迁移时,我得到:

SQLSTATE[22007]:无效的日期时间格式:1292 不正确的日期时间值:第active_from1 行的列的“0000-00-00 00:00:00”。

旧系统太大,无法对此进行任何更改——而且我也不被允许更改它。

有没有办法让 Laravel 接受 0000-00-00 作为有效日期(时间)?

Ken*_*ink 6

Laravel 默认使用严格模式,我通过更改为strict => trueconfig/database.php修复此问题strict => false


JPa*_*ark 0

这主要是 MySql 问题,因为较新版本的 MySql 禁用了零日期。此外,该NO_ZERO_DATE模式已被弃用(请参阅: https: //dev.mysql.com/doc/refman/8.0/en/sql-mode.html#sqlmode_no_zero_date)。为了解决这个问题,您可以将数据库中的所有零日期更改为 unix 纪元时间1970-01-01 00:00:00(这是我在升级 MySql 后必须对我的数据库所做的)。