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

Abh*_*ole 10 php mysql laravel php-carbon laravel-5

我试图created_at在Laravel中的JSON响应中从users表返回datetime.

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

{
    date: "2016-07-18 00:00:00.000000",
    timezone_type: 3,
    timezone: "UTC"
}
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题.

Mar*_*łek 13

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

$object->created_at->toDateTimeString();
Run Code Online (Sandbox Code Playgroud)

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


Pra*_*rve 9

您有CarbonLaravel框架,可以帮助您使用下面的代码使您想要的日期时间.

        $created_at = new Carbon($value)->toDateTimeString();
Run Code Online (Sandbox Code Playgroud)

现在通过$created_at的地方created_at.用户表的示例代码(注意:未经测试请检查自己是否需要传递对象或数组)

        $user = User::find(1);
        $user->created_at = new Carbon($user->created_at)->toDateTimeString();
Run Code Online (Sandbox Code Playgroud)


You*_*neL 6

您可以通过serializeUsing在您的AppServiceProvider类中添加方法来更改该行为以更新日期的 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');
        });
    }

    ...

}
Run Code Online (Sandbox Code Playgroud)