11

同様の質問がありますが、Doctrine2 の設定に関するものが見つからなかったので、ここに...

Doctrine2 のタイムゾーンを説明するこのページを読みましたが、これを実際に使用する方法が明確でないため、明確にしたいだけです: http://doctrine-orm.readthedocs.org/en/latest/cookbook/working- with-datetime.html

各ユーザーが自分の場所に基づいて関連付けられたタイムゾーンを持つことができるように、日時を UTC で保存したいのですが、データは一般的に保存されます。

基本的に、データは店舗の営業時間です (たとえば、午前 9 時に開店し、午後 6 時に閉店します)。店舗はそのタイムゾーンを追跡するため、店舗の人が「開店」時間を設定すると、店舗のタイムゾーンを処理し、時刻が UTC に変換されてデータベースに保存されます。次に、別のユーザーが店舗の営業時間を表示すると、自分のタイムゾーンまたは店舗のタイムゾーンで営業時間が表示されます。時刻は UTC であるため、問題にはならないので、任意のタイムゾーンに変換できます。

したがって、Doctrine のドキュメントには次の例が示されています。

class UTCDateTimeType extends DateTimeType
{
// ...
}

しかし、それはそれを使用する方法を言いません。列を「DateTime」ではなく「UTCDateTime」として宣言する必要がありますか? Doctrine が型の存在を認識するために、このクラスはどこに存在する必要がありますか?

4

2 に答える 2

18

Timestampable の動作に関する投稿のこの部分を見つけたところ、より簡単な解決策のように見えます。

config.yml

doctrine:
    dbal:
        types: 
            datetime: Acme\DoctrineExtensions\DBAL\Types\UTCDateTimeType
于 2012-06-09T15:27:14.090 に答える
0

Doctrine ブートストラップでタイプを登録し、マッピングで UTCDateTime を使用する必要があります。方法を説明するブログ投稿は次のとおりです

于 2012-06-09T11:31:41.553 に答える