teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

2

追記

2018/01/09 08:56

投稿

masaya_ohashi
masaya_ohashi

スコア9210

title CHANGED
File without changes
body CHANGED
@@ -15,6 +15,27 @@
15
15
  - Providerを使って、ログインユーザの設定したタイムゾーンに切り替える(しかしDBから受け取った値自体が書き変わらないのでうまくいかない)
16
16
  - アプリで使用するModel用の中間クラスModelBaseを作り、そのModelBase内でなんとか変換する(`__constructor`をいじってみたが、`__constructor`内ではまだプロパティが空なのでなにもできない)
17
17
 
18
+ ### 状況
19
+ Sampleというモデルで、created_atが`2018-01-01 12:00:00`なデータがDBに保存されているとします。
20
+ ```PHP
21
+ $sample = Sample::where('id', '=', 1)->first();
22
+ dd($sample->created_at, $sample->created_at->copy()->timezone("JST"));
23
+ ```
24
+ この時ddで表示されるデータは以下のようになっています。
25
+ ```
26
+ Carbon {#487 ▼
27
+ +"date": "2018-01-01 12:00:00.000000"
28
+ +"timezone_type": 3
29
+ +"timezone": "UTC"
30
+ }
31
+ Carbon {#521 ▼
32
+ +"date": "2018-01-01 21:00:00.000000"
33
+ +"timezone_type": 2
34
+ +"timezone": "JST"
35
+ }
36
+ ```
37
+ これを、使用箇所ごとにtimezone設定するのではなく、ビューに渡される、またはレスポンスで返されるときにすべてのCarbonのタイムゾーンが一括で指定できるようになりたいのです。
38
+
18
39
  ###発生している問題・エラーメッセージ
19
40
  とくになし。
20
41
 

1

考えている方法追記

2018/01/09 08:56

投稿

masaya_ohashi
masaya_ohashi

スコア9210

title CHANGED
File without changes
body CHANGED
@@ -11,6 +11,10 @@
11
11
 
12
12
  どうにかしてModelからCarbonプロパティへアクセスするときに、一括で指定したタイムゾーンへ変換する方法はないでしょうか?また、こういった「Laravelでユーザごとに使用するタイムゾーンを切り分けられる手法」があれば教えていただけないでしょうか。
13
13
 
14
+ 考えている方法としては以下のような物があります。
15
+ - Providerを使って、ログインユーザの設定したタイムゾーンに切り替える(しかしDBから受け取った値自体が書き変わらないのでうまくいかない)
16
+ - アプリで使用するModel用の中間クラスModelBaseを作り、そのModelBase内でなんとか変換する(`__constructor`をいじってみたが、`__constructor`内ではまだプロパティが空なのでなにもできない)
17
+
14
18
  ###発生している問題・エラーメッセージ
15
19
  とくになし。
16
20