2016-07-02 4 views
2

인증이있는 laravel 5.2 앱이 있습니다. 각 사용자에 대해 사용자 테이블의 "last_seen"열을 업데이트하는 맞춤 글로벌 미들웨어를 만들었습니다.Laravel carbon wrong timezone

참고 : 요청 후 실행되는 미들웨어입니다.

"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; 
    } 
} 

답변

2

:

여기 내 미들웨어 코드입니다.

분명히 내 테이블 스키마 선언에서 last_seen 열을 nullable로 설정하는 것을 잊어 버렸기 때문에 의도하지는 않았지만 현재 서버 타임 스탬프로 업데이트했습니다.

원본 created_at 및 updated_at 열의 소스 코드를 살펴 보았습니다.