我是symfony和doctrine的新手,非常感谢一些帮助...
我将doctrine连接到oracle 11g数据库。
我创建了一个包含可空日期字段的表/实体。
字段在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。
我遇到的问题是我无法理解认识到数据库和元描述是同步的。
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转储,则更新仍然未完成。
我已经清除了所有缓存以将其排除为一个问题。
欢迎任何建议!
答案 0 :(得分:1)
这是已知问题。查看Incorrect type mapping on Oracle Platform
一些参考:
问题是Oracle有一个“DATE”类型,实际上是DATETIME。这就是我们将它映射到Doctrine的Datetime类型的原因。
作为解决方法,您可以使用以下方法自行设置此信息: $ conn-> getDatabasePlatform() - > registerDoctrineTypeMapping('date','date'); 请注意,这是所有列的全局更改。如果您将DateTimes映射到TIMESTAMP字段,那么您可以使用它。