在Fractal Laravel中防止日期时间字段转换

时间:2017-12-09 03:58:25

标签: php laravel laravel-5.5

我使用dingo laravel包创建API。如您所知,它使用另一个名为Fractal的包来输出restful数据结构。

但是我遇到的问题是自动将DateTime格式的字段(如created_atupdated_at)转换为包含datetimezone_typetimezone的对象属性。

现在我想阻止这种转换。我怎样才能做到这一点 ?

2 个答案:

答案 0 :(得分:1)

基于答案here

这是因为当转换为JSON时,Carbon对象返回该表示。

您有多种方法可以解决这个问题:

(string) $model->created_at, // or
$model->created_at->toDateTimeString(), // or
$model->created_at->getTimestamp() // to show a UNIX timestamp

答案 1 :(得分:0)

另一种方法(对我来说更清洁)是Global Customization Via Carbon

// AppServiceProvider.php

public function boot()
{
    Carbon::serializeUsing(function ($carbon) {
        return $carbon->format('Y-m-d H:i:s');
    });
}

现在在您的变压器中,您可以使用:

'created_at' => $post->created_at,
'updated_at' => $post->updated_at,
'deleted_at' => $post->deleted_at,

无需检查$post->deleted_at是否为null