返回 int 时间戳而不是日期时间


Return int timestamps instead of datetime

我想知道是否有一个简单的解决方案可以覆盖 Laravel/Lumen 默认值以在返回模型时返回 unix 时间戳而不是实际日期。

    "mission": {
        "id": 1,
        "start": "2016-01-17 13:57:12",
        "end": "2016-02-17 00:00:00",
        "salary": "1000",
        "description": "Lorem ipsum dipsum chipsum, wipsum dodaskipsum wawipsum. Badatiss dum"
     }

现在我必须一直将日期时间戳转换为 unix 时间戳,无论我想在哪里使用它们(任何地方)。

前任:

        $result = Mission::all()
        ->map(function ($mission) {
            $mission->start = $this->toTimestamp($mission->start);
            $mission->end = $this->toTimestamp($mission->end);
            return $mission;
        })

您可以使用get更改模型中的日期时间。署名:

public function getStartAttribute($date)
{
    return $date->getTimestamp();
}

如果$date是碳对象,则应使用$date->timestamp

或者,您可以覆盖模型上的所有时间戳:

protected function getDateFormat()
{
    return 'U'; //U = Seconds since the Unix Epoch (January 1 1970 00:00:00 GMT)
}

Laravel's Eloquent 为日期和时间字段返回一个 Carbon 对象。

您应该能够在整个代码中使用 Carbon 对象的时间戳属性,不确定这对您来说是否更容易,但可能比修改模型以适应您的特定用例更理想。

$mission->start->timestamp

看起来您正在将模型的属性直接转换为 JSON,因此更改模型(WesleyE 的解决方案)可能最适合您。