laravel 没有toArray或toJson如何检索投射日期?

oknrviil  于 2023-01-31  发布在  其他
关注(0)|答案(2)|浏览(126)

用于通过强制转换设置某些日期列的格式,例如:

protected $casts = [
    'deadline' => 'date:d/m/Y',
];

在获取列时,返回carbon示例:

dd($model->deadline);

// Illuminate\Support\Carbon @1671235200 {#1542 ▶}

但即使将其强制转换为string,也不会按照cast中指定的格式进行格式化:

dd( (string) $model->deadline );

// "2022-12-17 00:00:00"

就在我可以得到格式化的日期时,整个模型被强制转换为Array或Json,

dd($model->toArray()['deadline']);

// "17/12/2022"

所以没有任何更简单的方法来获得格式化的日期,而不铸造整个模型?

k3fezbri

k3fezbri1#

您可以使用getter覆盖属性:

public function getDeadlineAttribute()
{
    return $this->deadline->format('d/m/Y');
}

如果您希望模型的所有日期都以这种方式格式化,您可以使用以下命令:

protected function serializeDate(DateTimeInterface $date)
{
    return $date->format('d/m/Y');
}
m0rkklqb

m0rkklqb2#

您可以向模型中添加一个新的getter函数,如下所示:

public function getFormatedDateAttribute()
{
    return $this->deadline->format('d/m/Y');
}

相关问题