学说迁移和数据转换

时间:2016-03-16 09:19:18

标签: symfony doctrine-orm

我在symfony 2项目中使用Doctrine的迁移来安全地迁移我的数据库。大多数时候它都是关于添加列的,但有时我会拆分列(因为规范化)或者我改变了相关性(一对一 - >一对多)。

创作本身很简单。但删除或重命名旧列/属性不是。只有当数据从旧格式转换为新格式时,才会发生这种情况。

实施例

当前情况:具有一个标记的任务实体

未来情况:具有一对多标签的任务实体

我在迁移脚本中尝试了preUp / postUp函数。 伪代码:

Fetch Tasks Foreach Tasks as Task $tag = new Tag(); $tag->setName($task->getTag()); persist $task->setNewtag($tag); persist flush 在第二个迁移脚本中,我可以安全地删除旧的Tag列,并将Newtag重命名为Tag。

问题:

当我--dry-运行脚本时,SQL命令不会被执行(ofcourse),而是“转换”#。脚本是因为列不存在而导致错误。

如何克服此错误?我可以截取SQL脚本的结果,只在SQL结果为真时执行转换吗?

0 个答案:

没有答案