1

私はsymfonyと教義に不慣れであり、いくつかの助けをいただければ幸いです...

私はDoctrineをOracle11gデータベースに接続しています。

null許容の日付フィールドを含むテーブル/エンティティを作成しました。

したがって、フィールドはYAMLで記述されます

    metar_time:
        type: date
        nullable: true
        column: METAR_TIME
    taf_time:
        type: date
        nullable: true
        column: TAF_TIME
    ltaf_time:
        type: date
        nullable: true
        column: LTAF_TIME
    storage_date:
        type: date
        nullable: true
        column: STORAGE_DATE

データベーススキーマは、フィールドのステータスをnull可能な日付として反映します。デフォルト値はnullです。

私が抱えている問題は、データベースとメタ記述が同期していることを認識させるための教義を得ることができないということです。

php app/console doctrine:schema:update --dump-sql
ALTER TABLE MET MODIFY (LTAF_TIME  DATE DEFAULT NULL, METAR_TIME  DATE DEFAULT NULL, STORAGE_DATE  DATE DEFAULT NULL, TAF_TIME  DATE DEFAULT NULL);


php app/console doctrine:schema:update --force
Updating database schema...
Database schema updated successfully! "1" queries were executed

それでも、SQLダンプを再度実行すると、更新は未解決のままです。

問題として除外するために、すべてのキャッシュをクリアしました。

どんな提案も歓迎します!

4

1 に答える 1

1

これは既知の問題です。OraclePlatformのタイプマッピングが正しくないことを 確認してください

いくつかの参照:

問題は、Oracleが「DATE」型を持っていることです。これは実際にはDATETIMEです。これが、DoctrineのDatetimeタイプにマップする理由です。

回避策として、次を使用してこの情報を自分で設定できます。$ conn-> getDatabasePlatform()-> registerDoctrineTypeMapping('date'、'date'); これはすべての列のグローバルな変更であることに注意してください。DateTimesをTIMESTAMPフィールドにマップする場合は、それでも問題ありません。

于 2013-03-25T13:53:45.880 に答える