只要您願意使用與「end_time」不同的名稱,您提供的鏈接應該是您的解決方案。你可以附加「end_time_formatted」,或類似的東西。
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Event extends Model
{
protected $appends = ['end_time_formatted'];
public function getEndTimeFormattedAttribute()
{
return $this->end_time->toAtomString();
}
}
然後,無論何時您將模型轉換爲json,它都會包含「end_time_formatted」。
另一種選擇(如果您需要保留相同的名稱)將通過將toJson方法複製到模型中來覆蓋toJson方法。我可能會建議不要這樣做,但是它會阻止在將它投射到JSON之前每次都要說$this->created_at = $this->created_at->toAtomString()
。
/**
* Convert the model instance to JSON.
*
* @param int $options
* @return string
*
* @throws \Illuminate\Database\Eloquent\JsonEncodingException
*/
public function toJson($options = 0)
{
$atom = $this->created_at->toAtomString();
$json = json_encode($this->jsonSerialize(), $options);
if (JSON_ERROR_NONE !== json_last_error()) {
throw JsonEncodingException::forModel($this, json_last_error_msg());
}
$json = json_decode($json);
$json->created_at = $atom;
$json = json_encode($json);
return $json;
}
我是不是能夠得到這個通過在方法的頂部將值更改爲工作,所以我被迫json_decode,然後重新編碼,它不給我感覺好極了。如果你確實使用這條路線,我會建議深入挖掘一下,試着讓它工作而不需要解碼。