1

json として返したいモデルがあります。タイムスタンプも返したいです。問題は、タイムスタンプが次の形式 2013-10-02 09:45:22 で保存されることですが、別の形式で保存したいです。データベースには元の形式が必要ですが、JSON として出力される場合は 2013.10.02 が必要です。getDateFormat() をオーバーライドできることがわかりましたが、データベースで使用される形式が変更されているようです。

データが返される前にいつでもデータをループできますが、この種のコードはモデルに属しているようです。

回答で更新:

これは、ロード時にLaravel / Eloquentモデルにカスタム属性を追加しますか? これがどのように機能するかを説明します。

class User extends Eloquent {

    protected $appends = array('my_date');    

    public function getMyDateAttribute()
    {
        return date('Y.m.d',strtotime($this->attributes['created_at']));
    }

}

重要な部分は、保護された変数 $appends です。これにより、オブジェクトが toArray または Json に変換されるときにアクセサーが確実に含まれるようになります。

4

1 に答える 1

4

次のような追加のアクセサーを作成できます。

class User extends Eloquent {

    protected $appends = array('my_date');

    public function setMyDateAttribute($value)
    {
         return $this->attributes['my_date'] = $value;
    }

    public function getMyDateAttribute($value)
    {
        return date('Y-m-d', strtotime($this->attributes['created_at']) );
    }

}

そしてそれを次のように使用しますUser->my_date;

于 2013-10-03T09:03:07.593 に答える