Как обновить поле end_at кассира laravel - PullRequest
2 голосов
/ 07 августа 2020

Я хочу обновить столбец end_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();

Ответы [ 2 ]

1 голос
/ 10 августа 2020

Тип данных TIMESTAMP используется для значений, содержащих как дату, так и время. TIMESTAMP имеет диапазон от 1970-01-01 00:00:01 UTC до 2038-01-19 03:14:07 UTC. Ваш год - 2520, а ваш MySQL может обрабатывать год как максимум 2038.
Измените миграцию метку времени на dataTime в формате:

$table->timestamp('ends_at');

на

$table->dateTime('ends_at');
0 голосов
/ 07 августа 2020

Похоже, что ends_at предназначен для управления кассиром Laravel, а не тем, что вы изменяете вручную. При просмотре исходного кода он обновляется только на основе других значений, а не каких-либо параметров. Он также не используется для установки каких-либо параметров в запросах Stripe API. Параметр cancel_at , по-видимому, наиболее вероятно отображает.

Если вы wi sh установите cancel_at, это займет временную метку эпохи (в секундах). Как упоминалось выше в @sta, максимальное значение этого параметра составляет 2147483647, что соответствует время в 2038 .

Обратите внимание, что подписки по умолчанию будут действовать бессрочно, поэтому в этом нет необходимости. установить "дату окончания" через 5 веков от настоящего момента.

...