返回int时间戳而不是datetime

时间:2016-02-17 14:20:36

标签: php laravel lumen

我想知道是否有一个简单的解决方案来覆盖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;
        })

2 个答案:

答案 0 :(得分:3)

您可以使用get..Atribute:

mutate模型中的日期时间
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)
}

答案 1 :(得分:1)

Laravel的Eloquent为日期&返回了一个Carbon对象。时间领域。

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

$mission->start->timestamp

您似乎将Model的属性直接转换为JSON,因此更改Model(WesleyE' s解决方案)可能最适合您。