我有一个数据库(实际上是在 Symfony1 应用程序中使用 Propel 创建的)。我正在 Symfony2 和 Doctrine 中重新实现它,但我也想借此机会对数据库进行一些重构。
我已经定义了一组 Doctrine 实体并运行了学说:migrations:diff,它为我创建了一个基本的迁移来添加表、列和约束,并删除大量的列。
但是,在删除这些列之前,我想将数据复制到一些新表中,然后将这些表中的新记录链接到第一个表中的新列。我不相信在纯 SQL 中可以做到这一点(通常,一个表的内容分布在三个或四个表中)。
这给了我一个提示,并让我找到了这个(我已经跳过了,因为我不知道“容器”可能与我的问题有什么相关性)。
但是我在 Symfony 或 Doctrine 文档中的任何地方都没有找到在迁移中实际移动数据的示例——在我看来,这似乎是迁移的核心目的之一!
有可能我可以使用上面这些链接中的提示,但是我不确定如何继续。我没有(也不想花时间来创建,尽管我确信我可以做到)现有数据库模式的 Doctrine 实体:然后我可以使用 DQL 吗?我根本不知道。
所以两个问题:
有人可以给我一个在表之间移动数据的 Doctrine 迁移示例吗?
或者,任何人都可以澄清 DQL 的语法对 Doctrine 中实体的定义的依赖程度吗?我可以使用它来指定不在实体定义中的列吗?