2016-12-25 4 views
1

私はEloquent Modelsを使用してバックエンドで作業しています。日付を出力するデフォルトの方法を設定するために、Eloquent Modelに日付属性をlong(unix-timestamp)として出力するように指示する方法を探しています。すべてのタイムスタンプを長時間出力するように強くモデルを強制する

$user = User:find(id); 
echo $user->toJson(); 

//現在の出力

{ 
    "id":1, 
    "username":"root", 
    "created_at":"2016-12-25 18:23:34", 
    "updated_at":"2016-12-25 18:23:34" 
} 

//所望の出力

{ 
    "id":1, 
    "username":"root", 
    "created_at":1482690214, 
    "updated_at":1482690214 
} 

はoutputing toJson()またはこれを達成するための他の方法をオーバーライドするきれいな方法があります?

編集

それは魔法__getを(上書きすることをお勧めしますことを、あなたの事を実行してください)?あるいは、EloquentはtoJsonを呼び出すときに別の方法で属性にアクセスしますか?

答えて

1

設定された所望のフォーマットto $dateFormat variableは:

protected $dateFormat = 'U'; 

デフォルトで、タイムスタンプはY-m-d H:i:sとしてフォーマットされています。タイムスタンプ形式をカスタマイズする必要がある場合は、モデルの$dateFormatプロパティを設定します。で... \ベンダ\ nesbot \後続のデータ:このプロパティは、モデルが

https://laravel.com/docs/5.3/eloquent-mutators#date-mutators

+0

InvalidArgumentException配列やJSONにシリアライズされたときに日付属性は、その形式だけでなく、データベースに格納されている方法を決定しますcarbon \ src \ Carbon \ Carbon.php on line 425 –

+0

あなたのソリューションを試してみるときにこの例外があります。私は何を間違えたのですか? –

+0

@KarimKharbaはこの[回答]のように 'timestamps'を使うのではなく、' integer'を使うように移行を変更しようとしています(http://stackoverflow.com/questions/35915576/laravel-timestamp-saving-time-as-unix-timestamp/35915610#35915610)。 –

関連する問題