Laravel碳错误的时区


Laravel carbon wrong timezone

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

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

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

一切工作正常,如预期,直到我注销。当我退出时,该列将更新为我当前时区"罗马尼亚"的时间。我不知道为什么会这样,因为我从来没有声明过"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;
    }
}

我找到解决办法了。

显然,在我的表模式声明中,我忘记将lastrongeen列设置为空,因此,它使用当前服务器时间戳进行更新,尽管我并没有打算这样做。

我通过查看默认的created_at和updated_at列的源代码发现了这一点。