2017-04-07 8 views
0

私は質問があります:あなたは通常、laravel 5のサイトでタイムゾーンで作業していますか?Laravel 5はタイムゾーンを設定しますpostgres接続時のタイムゾーンを定義しません

Postgresは現地時間で、ノートブックのローカルタイムゾーンはブラジリアです。しかし、アプリケーションにはconfig/app.phpがUTCに設定されていますが、config/database.phpのデータベース構成には指定がありませんでした。したがって、UTCというconfig("app.timezone")というパラメータを渡しました。

ログイン後、私はJWT CustomClaimsを印刷し、ブラジリアのタイムゾーンが私に届きます。 [0.o]

私はタイムゾーンをUTCにヘッジし、ユーザーデータを検索して正常になります。したがって、config/database.phpのこのパラメータは解決されません。

ヒント?

database.phpで構成でペースト:

https://pastebin.com/Uq005TjT

システマ:Debianのジェシー

~$ timedatectl 

    [email protected]:~$ timedatectl 
     Local time: Thu 2017-04-06 21:16:55 -03 
    Universal time: Fri 2017-04-07 00:16:55 UTC 
     RTC time: Thu 2017-04-06 21:16:56 
     Time zone: America/Sao_Paulo (-03, -0300) 
    NTP enabled: yes 
NTP synchronized: no 
RTC in local TZ: yes 
     DST active: no 
Last DST change: DST ended at 
        Sat 2017-02-18 23:59:59 -02 
        Sat 2017-02-18 23:00:00 -03 
Next DST change: DST begins (the clock jumps one hour forward) at 
        Sat 2017-10-14 23:59:59 -03 
        Sun 2017-10-15 01:00:00 -02 

Warning: The system is configured to read the RTC time in the local time zone. This 
     mode can not be fully supported. It will create various problems with time 
     zone changes and daylight saving time adjustments. The RTC time is never updated, 
     it relies on external facilities to maintain it. If at all possible, use 
     RTC in UTC by calling 'timedatectl set-local-rtc 0' 

設定/ app.php

/* 
|-------------------------------------------------------------------------- 
| Application Timezone 
|-------------------------------------------------------------------------- 
| 
| Here you may specify the default timezone for your application, which 
| will be used by the PHP date and date-time functions. We have gone 
| ahead and set this to a sensible default for you out of the box. 
| 
*/ 

'timezone' => 'UTC', 

/* 
|-------------------------------------------------------------------------- 
| Application Locale Configuration 
|-------------------------------------------------------------------------- 
| 
| The application locale determines the default locale that will be used 
| by the translation service provider. You are free to set this value 
| to any of the locales which will be supported by the application. 
| 
*/ 

'locale' => 'en', 

のconfig/database.phpで

<?php 

    return [ 

     /* 
     |-------------------------------------------------------------------------- 
     | Default Database Connection Name 
     |-------------------------------------------------------------------------- 
     | 
     | Here you may specify which of the database connections below you wish 
     | to use as your default connection for all database work. Of course 
     | you may use many connections at once using the Database library. 
     | 
     */ 

     'default' => env('DB_CONNECTION', 'mysql'), 

     /* 
     |-------------------------------------------------------------------------- 
     | Database Connections 
     |-------------------------------------------------------------------------- 
     | 
     | Here are each of the database connections setup for your application. 
     | Of course, examples of configuring each database platform that is 
     | supported by Laravel is shown below to make development simple. 
     | 
     | 
     | All database work in Laravel is done through the PHP PDO facilities 
     | so make sure you have the driver for your particular database of 
     | choice installed on your machine before you begin development. 
     | 
     */ 

     'connections' => [ 

      'sqlite' => [ 
       'driver' => 'sqlite', 
       'database' => env('DB_DATABASE', database_path('database.sqlite')), 
       'prefix' => '', 
      ], 

      'mysql' => [ 
       'driver' => 'mysql', 
       'host' => env('DB_HOST', '127.0.0.1'), 
       'port' => env('DB_PORT', '3306'), 
       'database' => env('DB_DATABASE', 'forge'), 
       'username' => env('DB_USERNAME', 'forge'), 
       'password' => env('DB_PASSWORD', ''), 
       'charset' => 'utf8mb4', 
       'collation' => 'utf8mb4_unicode_ci', 
       'prefix' => '', 
       'strict' => true, 
       'engine' => null, 
      ], 

      'pgsql' => [ 
       'driver' => 'pgsql', 
       'host' => env('DB_HOST', '127.0.0.1'), 
       'port' => env('DB_PORT', '5432'), 
       'database' => env('DB_DATABASE', 'forge'), 
       'username' => env('DB_USERNAME', 'forge'), 
       'password' => env('DB_PASSWORD', ''), 
       'charset' => 'utf8', 
       'timezone' => config('app.timezone'), 
       'locale' => config('app.locale'), 
       'prefix' => '', 
       'schema' => 'public', 
       'sslmode' => 'prefer', 
      ], 

     ], 

私のタイムゾーンは現在認証さ:

array:1 [ 
    "user" => array:4 [ 
    "id" => 2 
    "name" => "Francis Rodrigues" 
    "email" => "[email protected]tems.net" 
    "last_logged_in_at" => Carbon {#236 
     +"date": "2017-04-07 11:49:48.000000" 
     +"timezone_type": 1 
     +"timezone": "-03:00" 
    } 
    ] 
] 

答えて

0

は、おそらくあなたは、PHPでサポートされているタイムゾーンに設定する必要があります。

私が誤解していない場合は、あなたの場合、タイムゾーンをブラジルに設定しようとしています。これは動作するはず

:Userモデルで

'timezone' => 'America/Brasilia' 
+0

を、私は、そのアプリケーションを希望し、ポストグル接続はブラジルの私の現地時間ではなく、UTCタイムゾーンを利用します。 –

0

マイprovisoryソリューション:UTCタイムゾーンで

/** 
* Setting UTC timezone with mutator. 
* 
* @param $value 
* @return string 
*/ 
public function getLastLoggedInAtAttribute($value) 
{ 
    $carbon = Carbon::createFromTimestampUTC(strtotime($value)); 
    return $carbon->toDateTimeString() . $carbon->getTimezone()->getName(); 
} 

出力:本当にで

array:1 [ 
    "user" => array:4 [ 
    "id" => 2 
    "name" => "Francis Rodrigues" 
    "email" => "[email protected]" 
    "last_logged_in_at" => "2017-04-07 18:04:31+00:00" 
    ] 
] 
関連する問題