【发布时间】:2020-11-27 18:04:33
【问题描述】:
我想更新订阅表的 ends_at 列。当我使用
Carbon::now()
完美更新但何时使用
Carbon::now()->addCenturies(5);
我面临错误
SQLSTATE[22007]: Invalid datetime format: 1292 Incorrect datetime value: '2520-08-07 11:39:13' for column 'ends_at' at row 1 (SQL: update `subscriptions` set `ends_at` = 2520-08-07 11:39:13, `subscriptions`.`updated_at` = 2020-08-07 11:39:13 where `id` = 1)
我想要一个终身订阅,因为我认为增加了几个世纪。 kinldy 告诉我解决方案我的控制器代码是
$subscription = $user->newSubscription('default', $plan->plan_id)->create($request->paymentMethod, [ 'email' => $user->email ]);
$subscription->ends_at = Carbon::now()->addCenturies(5);
$subscription->save();
【问题讨论】:
-
TIMESTAMP数据类型用于同时包含日期和时间部分的值。TIMESTAMP的范围为 '1970-01-01 00:00:01' UTC 到 '2038-01-19 03:14:07' UTC。您给定的年份是 2520 并且您的 MySQL 可以将年份处理为最大值 2038 -
可以,如果你使用
DATETIME,它支持的范围是'1000-01-01 00:00:00'到'9999-12-31 23:59:59'。而TIMESTAMP的范围为'1970-01-01 00:00:01' UTC到'2038-01-19 03:14:07' UTC。 dev.mysql.com/doc/refman/8.0/en/datetime.html -
如果您使用的是
$table->timestamp('ends_at');,请将其更改为$table->dateTime('ends_at');。 -
解决了你的问题?
-
是的,再次感谢,我稍后进行迁移并且工作正常
标签: laravel stripe-payments laravel-cashier