如何使用Doctrine从模型中删除和重建表而不会丢失数据?

时间:2010-11-11 05:47:51

标签: php doctrine doctrine-1.2

我使用以下代码从我的模型构建表格:

Doctrine::createTablesFromModels();

我刚刚开始一个新项目,这是我第一次在应用程序中使用Doctrine。到目前为止,由于我刚刚开始并且没有任何数据,我只是在phpMyAdmin中删除表并在每次对模型进行更改时运行上面的代码。显然,这不是生产环境中的选项。

Doctrine是否有一个我可以调用的方法或方法块,它会丢弃并重建表而不会丢失现有数据?也许首先将它保存到一些临时表中?如果没有,我完成同样的事情的其他选择是什么?

或者,在让Doctrine生成我的表格时,我是否走错了方向?我应该自己维护它们并在模型中保持我的关系和列更新吗?

我正在使用Doctrine 1.2和CodeIgniter框架。

2 个答案:

答案 0 :(得分:1)

查看Doctrine Migrations,它是在模型/模式版本之间编写更改脚本的方法。

http://www.doctrine-project.org/projects/orm/1.2/docs/manual/migrations/en

就个人而言,我只是对我的架构进行了更改,然后从中生成模型。

答案 1 :(得分:0)

我正在使用Doctrine2,这是我过去做过的事情:

  1. 将表重命名为tablename_BAK
  2. 使用doctrine
  3. 创建新表
  4. 执行INSERT SELECT语句将数据移动到表中。
  5. 注意:: 如果您定义了触发器,这可能会变得毛茸茸。对于生产现场来说,这也不是一个好主意,除非它是" Down for maintenance"情况类型。

    请参阅INSERT SELECT