Laravel碳错时区

时间:2016-07-02 20:21:17

标签: php laravel-5 php-carbon

我有一个带有身份验证的laravel 5.2应用程序。我已经构建了一个自定义全局中间件,可以为每个用户更新users表上的“last_seen”列。

注意:它是在请求之后运行的中间件。

我使用“UTC”时区,以便在计算世界任何地方的差异时不会出错。

一切正常并且正如预期的那样,直到我退出。当我退出时,该列将使用我当前时区“romania”中的时间进行更新。 我不知道为什么会这样,因为我从未宣布过“UTC”以外的时区。

这是我的中间件代码:

<?php

namespace App\Http\Middleware;

use Auth;
use Closure;
use Carbon\Carbon;

class LastSeenMiddleware
{
    public function handle($request, Closure $next)
    {
        $response = $next($request);

        if(Auth::check()){
            Auth::user()->last_seen = Carbon::now();
            Auth::user()->save();
        }

        return $response;
    }
}

1 个答案:

答案 0 :(得分:2)

我找到了解决方案。

显然,在我的表模式声明中,我忘了将last_seen列设置为可空,因此,它使用当前服务器时间戳更新,即使我没有打算这样做。

我通过窥视默认的created_at和updated_at列的源代码找到了。