在维护所有以前的模型及其元数据(如关系)的同时,将新模型添加到我在Symfony + Doctrine上构建的应用程序的标准方法是什么。
我真正想要的是:一个命令/程序,相当于./script/generate model FooModel
中的Ruby on Rails
(生成时没有任何类型的重置db / reset模型)
如果这两个是不同的东西,我正在追逐错误的鬼(我想我不是),请告诉我。
编辑:更新了问题。
答案 0 :(得分:3)
您不应该重写基类,因为每当您执行build:all
或doctrine:build-model
时,这些基本类都会自动生成。使用lib / model目录中生成的类,例如YourModel .class.php如果你想添加新方法等那么你的新模型将与你现有的模型一起生成。
答案 1 :(得分:1)
标准流程是将新模型及其所需的任何关系添加到schema.yml
然后执行./symfony doctrine:build-all(或:build --all for symfony 1.3 / 1.4)
正如richsage所说,你不应该编辑基类,所以这个操作完全没有破坏性。
Doctrine还具有迁移功能,因此您可以在将新代码部署到生产环境时轻松更新数据库模式:
http://www.doctrine-project.org/documentation/cookbook/1_0/en/symfony-and-doctrine-migrations
较新版本的doctrine(1.1 +,symfony 1.3+)包含generate-migrations-diff任务,可以为您创建迁移。这里有很好的介绍:
Extra changeColumns in Doctrine generate-migrations-diff
[编辑:上面问题的作者现在也在下面复制/粘贴]
答案 2 :(得分:0)
generate-migrations-diff不会区分两个不同的yaml文件。它实际上会比较您的模型和您的yaml文件,然后根据差异生成迁移。如果从与yaml和类同步的db开始,那么进行模式更改的工作流应该是: