Я сохраняю даты, используя часовой пояс UTC для согласованности базы данных, я не могу использовать другой часовой пояс для отображения дат сериализации моделей
Настройки моего приложения:
APP_TIMEZONE=UTC
DISPLAY_TIMEZONE=Europe/Paris
Я хочу отобразить всю дату в желаемом часовом поясе, чтобы добиться того, что я создал черту, которую я использую в своих моделях:
trait SetDisplayDateTimezone
{
public function getCreatedAtAttribute($value)
{
$timezone = env('DISPLAY_TIMEZONE', 'UTC');
return $this->asDateTime($value)->setTimezone($timezone);
}
}
Это работает, как и ожидалось, когда я получаю доступ к атрибутуЯ получил углеродный объект с применением правильного часового пояса
Model::find(1)->created_at;
Carbon @1572610747 {#68 ▼
date: 2019-11-01 13:19:07.0 Europe/Paris (+01:00)
}
, но, похоже, не работает, когда происходит сериализация (при выводе json)
Что я ожидаю:
{"id": 1,"created_at": "2019-11-01 13:19:07","updated_at": "2019-11-01 12:19:07"}
Что я получаю:
{"id": 1,"created_at": "2019-11-01T12:19:07.000000Z","updated_at": "2019-11-01 12:19:07"}
Что я пробовал: Я обновил свою функцию черты, чтобы вернуть сериализованную дату
return $this->serializeDate($this->asDateTime($value)->setTimezone($timezone));
Это работает, как и ожидалось, для выходов json, но я больше не могу использовать объект Carbon в другом месте моего кода
Любая идея, как применить сериализацию даты Eloquent для мутированныхатрибуты только при сериализации моделипроисходит?