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 回答