我有一个带身份验证的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列的源代码发现了这一点。