Return int 时间戳而不是 datetime

Return int timestamps instead of datetime

我想知道是否有一个简单的解决方案来覆盖 Laravel/Lumen 默认为 return unix 时间戳而不是 returning 模型时的实际日期。

    "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;
        })

您可以 mutate 使用 get..Atribute:

模型中的日期时间
public function getStartAttribute($date)
{
    return $date->getTimestamp();
}

如果$date是一个Carbon对象,你应该使用$date->timestamp

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

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

Laravel 的 Eloquent returns 用于日期和时间字段的 Carbon 对象。

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

$mission->start->timestamp

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