9

根据文档, Laravel 自动将created_atand updated_at(来自 Eloquent 模型)传递给新的 Carbon 实例。

但是,如果该值是默认值,它似乎0000-00-00 00:00:00会输出以下内容: -0001-11-30 06:12:32对于所有0000-00-00 00:00:00值。

这些字段设置为时间戳类型。

我目前正在使用以下内容(在模型中),但是必须在所有可能包含默认/未设置日期的 Laravel 模型中执行此操作感觉很笨拙。

public function getCreatedAtAttribute($value) {
    return $value == "0000-00-00 00:00:00" ? "0000-00-00 00:00:00" : $value;
}
4

2 回答 2

2

这发生在model.php中的 getAttributeValue 方法中

elseif (in_array($key, $this->getDates()))
    {
        if ($value) return $this->asDateTime($value);
    }

因为它被传递给 asDateTime 方法。这可以用类似的东西来解决

elseif (in_array($key, $this->getDates()))
    {
        if ($value && $value !== '0000-00-00 00:00:00') return $this->asDateTime($value);
    }

这可能是拉取请求的问题吗?

于 2013-10-04T15:21:42.133 回答
2

似乎没有干净的方法可以做到这一点。所以我去了:

public function getCreatedAtAttribute($value) {
    return $value == "0000-00-00 00:00:00" ? "0000-00-00 00:00:00" : $value;
}
于 2013-11-04T22:48:57.923 回答