Php Laravel为什么我的用户模型会自动将unix时间戳转换为datetime字符串

Php Laravel为什么我的用户模型会自动将unix时间戳转换为datetime字符串,php,mysql,laravel,Php,Mysql,Laravel,我需要我的api以秒为单位输出自历元以来的所有日期,然而,当我调用我的/用户路由时,我得到的是: { "id": 1, "name": "jk", "email": "*****@*****", "email_verified_at": 1619606859, "can_add": 1, "ip_registered": "**

我需要我的api以秒为单位输出自历元以来的所有日期,然而,当我调用我的/用户路由时,我得到的是:

{
"id": 1,
"name": "jk",
"email": "*****@*****",
"email_verified_at": 1619606859,
"can_add": 1,
"ip_registered": "*****",
"created_at": "2021-04-28T10:46:50.000000Z",
"updated_at": "2021-04-28T10:47:39.000000Z"
}
以下是我的用户模型:

<?php

namespace App\Models;

use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Laravel\Passport\HasApiTokens;

class User extends Authenticatable
{
    use HasFactory, Notifiable, HasApiTokens;

    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = [
        'name',
        'email',
        'password',
        'can_add',
        'ip_registered',
    ];

    /**
     * The attributes that should be hidden for arrays.
     *
     * @var array
     */
    protected $hidden = [
        'password',
        'remember_token',
    ];


    protected $dateFormat = 'U';
}
为什么laravel会自动转换更新的和创建的,但不转换电子邮件,以及如何阻止它转换任何东西

编辑: 如果有人有同样的问题,下面是我的确切解决方案:

protected function serializeDate(DateTimeInterface $date)
{
    return (int)$date->format('U');
}

自Laravel7以来,他们已将日期序列化更改为Carbon的
toJson
方法,如他们在声明中所述。要将其还原,请将
serializeDate
方法添加到模型中

使用DateTimeInterface;
/**
*为数组/JSON序列化准备一个日期。
*
*@param\DateTimeInterface$date
*@返回字符串
*/
受保护函数序列化日期(DateTimeInterface$date)
{
返回$date->format('Y-m-dh:i:s');
}

默认情况下,创建时和更新时都将强制转换为雄辩模型的$dates,因此您可以对其执行碳操作,而无需转换为碳实例。这是否回答了您的问题?
public function user(Request $request)
{
    return response()->json(User::find(Auth::id()));
}
protected function serializeDate(DateTimeInterface $date)
{
    return (int)$date->format('U');
}