Я только что обновил свое 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 полей, в которых мне нужно было бы создать эти мутаторы, поэтому мне было интересно, есть ли лучший способ?