2016-10-27 1 views
0

私のモデルのアトリビュートに2つ以上のゲッタを持つことはできますか?同じアトリビュートのLaravelミューテータ

私は日付を持っていると私は、この作る場合、私は、日付とし、カーボン今

と人間が読める形式としての両方の変化にそれを持ってしたいと思います:

は、人間が読める形式にUTCに変換

public function getCreatedAtAttribute($date){ 

Carbon::setLocale('de'); 
return Carbon::createFromFormat('Y-m-d H:i:s', $date)->diffForHumans(); 

}

私は人間が読めるでそれを得ます。

通常の日付を取得するにはどうすればよいですか?

答えて

1

あなたは、あなたが私たちにカーボン日付インスタンスを与え、あなたの人間が読める形式の日付を取得するために

protected $dates = ['created_at']; 

としてモデルにcreated_atと列を追加することができ、人間が読める形式の日付と同様に、通常の日付を取得したい場合あなたがcreatedAtを得ることができますANSWERのUPDATE

$model_instance->created_at->diffForHumans(); 

としてそれを行うことができますカスタムアクセサを追加することにより、異なるフォーマットの日付:

class ModelName extends Model { 
    protected $appends = ['newtime','difftime']; 

    public function getNewtimeAttribute(){ 
     return Carbon::parse($this->created_at)->diffForHumans; 
    } 

    public function getDifftimeAttribute(){ 
     return Carbon::now()->diff(Carbon::parse($this->created_at)); 
    } 
} 

$appendsプロパティに記載されているすべての属性が自動的にモデルの配列やJSON形式に含まれますが、あなたが適切なアクセサを追加したことを条件とします。

+0

OKですが、DBテーブル(MySql)にあるように日付を返し、日付を取得する方法があります....カーボンをグローバルに設定する方法 – lewis4u

+0

参照することができますカーボンインスタンスをグローバルに設定するこのリンクhttp://stackoverflow.com/a/25939511/4584028 –

関連する問題