我必须在现有(旧)数据库上构建一个Laravel应用程序。此数据库使用0000-00-00作为默认日期。我无法更改它,因为当前系统(也将保留)使用它来检查某物是否在无限时间内处于活动状态(例如:active_from 0000-00& active_till 0000-00-00意味着它始终处于活动状态)。
我想向现有的表中添加一个列,所以我创建了一个迁移:add_columnname_to_tablename_table。在up()函数中,我做了:$table->string('columnname')。当我运行迁移时,我得到:
SQLSTATE22007:无效的日期时间格式: 1292不正确的日期时间值:'0000-00-00 : 00:00:00‘,列
active_from在第1行。
旧的系统太大了,不能对此做任何改变--我不允许改变它。
有没有办法让Laravel接受0000-00-00作为有效日期(时间)?
发布于 2018-07-12 07:03:19
Laravel默认使用严格的模式,我已经通过将config/database.php中的config/database.php更改为strict => false来修正这个问题。
发布于 2019-11-25 18:38:31
当日期无效时,strtotime将返回一个低于零的数字,例如MySQL 0000-00- 00 :00:00中常见的数字。请确保传递对象类型日期或碳:
return strtotime(date or carbon object) < 0 ? null : date发布于 2018-07-11 16:20:31
这主要是一个MySql问题,因为新版本的MySql禁用了零日期。此外,取消了NO_ZERO_DATE模式(请参阅:date)。为了解决这个问题,您可以将数据库中的所有零日期更改为unix纪元时间1970-01-01 00:00:00 (这是升级MySql后我必须做的事情)。
https://stackoverflow.com/questions/51288585
复制相似问题