Php Laravel为什么我的用户模型会自动将unix时间戳转换为datetime字符串
我需要我的api以秒为单位输出自历元以来的所有日期,然而,当我调用我的/用户路由时,我得到的是: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": "**
{
"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');
}