「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メソッドをモデルにコピーしてオーバーライドすることができます。私はおそらくこれに対して助言したいと思いますが、それを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、とすることを余儀なくされました。このルートを使用している場合は、デコードする必要なしに動作させるために少し深く掘り下げることをお勧めします。