Laravel created_at return 对象代替数据库中的日期格式?

Laravel created_at return object in place of date format in database?

我正在尝试 return created_at 用户 table 在 JSON 响应中的日期时间 Laravel。

在我的数据库中,它显示的值为 2016-07-18 00:00:00 但是当我在 JSON api 中尝试 return 时,它会转换为

{
    date: "2016-07-18 00:00:00.000000",
    timezone_type: 3,
    timezone: "UTC"
}

我该如何解决这个问题?

您在 Laravel 框架中有 Carbon 可以帮助您使用以下代码根据需要制作日期时间。

        $created_at = new Carbon($value)->toDateTimeString();

现在在 created_at 处传递 $created_at。 用户示例代码 table(注意:未测试请自行检查是否需要传递对象或数组)

        $user = User::find(1);
        $user->created_at = new Carbon($user->created_at)->toDateTimeString();

默认情况下 created_atupdated_atCarbon 对象,所以你可以这样做:

$object->created_at->toDateTimeString();

再次获取格式 Y-m-d H:i:s

您可以通过添加 serializeUsing 方法来更改该行为 在您的 AppServiceProvider class 中更新日期的 json 序列化格式,它只会影响 api调用(docs),这里是一个例子:

use Illuminate\Support\Carbon;
use Illuminate\Support\ServiceProvider;

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

    ...

}

既然你想得到JSON响应,你可以使用Eloquent API Resource将Carbon对象转换成任何格式,例如:

return [
    'created_at' => $this->created_at->toDateTimeString(),
    ....
];