Указанная вами ссылка должна быть решением для вас, если вы хотите использовать другое имя, чем «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, скопировав его в вашу модель. Я бы посоветовал это сделать, но это не помешало бы говорить $this->created_at = $this->created_at->toAtomString()
каждый раз, прежде чем отдать его JSON.
/**
* 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, а затем перекодировать, который не чувствует себя замечательно для меня. Если вы используете этот маршрут, я предлагаю вам немного глубже попытаться заставить его работать без необходимости декодирования.