我有一个带有身份验证的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;
}
}
答案 0 :(得分:2)
我找到了解决方案。
显然,在我的表模式声明中,我忘了将last_seen列设置为可空,因此,它使用当前服务器时间戳更新,即使我没有打算这样做。
我通过窥视默认的created_at和updated_at列的源代码找到了。