Как установить глобальный формат углерода в Laravel 7 - PullRequest
0 голосов
/ 22 апреля 2020

Я только что обновил свое Laravel приложение с 6.x до 7.x, и у меня возникли проблемы с датами / временными метками. Я знаю, что кое-что изменилось в этом отношении.

Я пытаюсь установить формат Carbon по умолчанию во всем мире. У меня есть несколько пользовательских полей timestamp в моей базе данных, созданных так:

$table->timestamp('published_at')->nullable();

И после обновления я начинал получать следующие ошибки, когда эти поля обновляются:

Invalid datetime format: 1292 Incorrect datetime value: '2020-04-04T11:00:00.000Z' for column 'published_at'

Я пытался использовать предложенный метод для каждого model:

protected function serializeDate(DateTimeInterface $date)
{
    return $date->format('Y-m-d H:i:s');
}

Но этот метод никогда не вызывается, и он не работает.

Однако настройка мутатора работает нормально:

public function setPublishedAtAttribute($value)
{
    $this->attributes['published_at'] = Carbon::parse($value)->format('Y-m-d H:i:s');
}

Но я пытался избежать повторного кода для этих полей. В общей сложности есть около 14 полей, в которых мне нужно было бы создать эти мутаторы, поэтому мне было интересно, есть ли лучший способ?

1 Ответ

0 голосов
/ 22 апреля 2020

Хорошо, я понял это. Мне просто нужно было добавить эти метки времени к

protected $dates = [];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...