Как исправить часовой пояс Carbon после обновления до Laravel 5.8 - PullRequest
0 голосов
/ 02 мая 2019

После обновления до Laravel 5.8 поле «create_at» возвращает строку, подобную этой

«createAt»: «2019-05-01T16: 36: 25.000000Z»

Но я хочу вернуть объект, как раньше, в Laravel 5.7 следующим образом:

"creatAt": {"date": "2019-05-01 19: 36: 25.000000", "timezone_type ": 3," timezone ":" Asia / Baghdad "}

Я действительно просмотрел сеть и ничего не нашел, и в руководстве по обновлению тоже ничего об этом нет.Я возвращаю его из ресурсов просто так в формате JSON:

public function toArray($request)
{
    return [
        'id' => $this->id,
        'createdAt' => $this->created_at,
    ];
}

Ответы [ 2 ]

1 голос
/ 03 мая 2019

Вот как я мог это решить:

public function toArray($request)
{
    return [
        'id' => $this->id,
        'createdAt' => $this->created_at,
        'date' => Carbon::serializeUsing(function ($createdAt) {
          return [
              'date' => $createdAt->toDateTimeString(),
              'timezone_type' => $createdAt->timezone_type,
              'timezone' => $createdAt->tzName,
          ];
        }),
   ];
}

Теперь он возвращает объект, подобный этому:

"createdAt": {
     "date": "2019-05-01 19:36:25",
     "timezone_type": 3,
     "timezone": "Asia/Baghdad"
},
"date": null

Разрывное изменение задокументировано в официальной углеродной документации .

0 голосов
/ 03 мая 2019

Попробуйте вернуть углеродный экземпляр даты:

Carbon::parse($this->created_at)
...