Laravel:转换为 JSON 时更改模型中 Carbon 日期的格式

Yah*_*din 1 laravel eloquent laravel-5 laravel-5.1 laravel-5.3

目前,当我将模型转换为 JSON 时,所有 Carbon 日期字段都会像这样进行转换:

"end_time": {
    "date": "2017-02-03 23:59:00.000000",
    "timezone_type": 3,
    "timezone": "Europe/London"
}
Run Code Online (Sandbox Code Playgroud)

我希望它使用Atom符号来投射。这可以在碳中完成,如下所示:

$order->end_time->toAtomString()
Run Code Online (Sandbox Code Playgroud)

哪里$dateCarbon日期。

如何使模型在将日期转换为 JSON 时将其转换为原子格式?

我知道可以像这样附加数据:https://laravel.com/docs/5.3/eloquent-serialization#appending-values-to-json

但这不会改变现有值的格式吗?

Leo*_*ard 5

考虑到复活僵尸的风险,我将提出一个替代解决方案来解决这个问题:

覆盖serializeDate由特征定义的方法HasAttributes

/**
 * Prepare a date for array / JSON serialization.
 *
 * @param  \DateTimeInterface  $date
 * @return string
 */
protected function serializeDate(DateTimeInterface $date)
{
    return $date->toAtomString();
}
Run Code Online (Sandbox Code Playgroud)