如何更新 laravel 收银员的 ends_at 字段
How to update ends_at field of laravel cashier
我想更新 ends_at 订阅列 table。当我使用
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();
看起来 ends_at
应该是 managed for you by Laravel Cashier, not something you modify manually. Reviewing the source code, it is only updated based on other values, not any parameters. It also is not used to set any parameters in Stripe API requests. The cancel_at
parameter 似乎最有可能映射。
如果你想设置cancel_at
,它需要一个纪元时间戳(以秒为单位)。正如@sta上面提到的,这个有一个最大值2147483647
,代表a time in 2038.
另请注意,默认情况下订阅将永久持续,因此无需将“结束日期”设置为距现在 5 个世纪后。
TIMESTAMP
数据类型用于包含日期和时间部分的值。 TIMESTAMP
的范围是 1970-01-01 00:00:01 UTC
到 2038-01-19 03:14:07 UTC
。您给定的年份是 2520
,而您的 MySQL 最多可以处理年份 2038
。
将迁移 timestamp 更改为 dataTime 格式为:
$table->timestamp('ends_at');
至
$table->dateTime('ends_at');
我想更新 ends_at 订阅列 table。当我使用
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();
看起来 ends_at
应该是 managed for you by Laravel Cashier, not something you modify manually. Reviewing the source code, it is only updated based on other values, not any parameters. It also is not used to set any parameters in Stripe API requests. The cancel_at
parameter 似乎最有可能映射。
如果你想设置cancel_at
,它需要一个纪元时间戳(以秒为单位)。正如@sta上面提到的,这个有一个最大值2147483647
,代表a time in 2038.
另请注意,默认情况下订阅将永久持续,因此无需将“结束日期”设置为距现在 5 个世纪后。
TIMESTAMP
数据类型用于包含日期和时间部分的值。 TIMESTAMP
的范围是 1970-01-01 00:00:01 UTC
到 2038-01-19 03:14:07 UTC
。您给定的年份是 2520
,而您的 MySQL 最多可以处理年份 2038
。
将迁移 timestamp 更改为 dataTime 格式为:
$table->timestamp('ends_at');
至
$table->dateTime('ends_at');