2010-09-16 108 views
3

我是一個symfony(1.4 + Doctrine)的初學者,但有一點讓我感到害怕。似乎每當想要更改模型時,唯一的方法是更改​​數據庫的模式(config/doctrine/schema.yml),然後調用symphony doctrine:build,,這會刷新數據庫中的所有當前數據。在symfony中修改數據庫(doctrine)

這在我看來並不是一種理智的方式。如果一年後我的應用程序在製作中,我決定我的用戶需要能夠將他們的Facebook頁面添加到配置文件中?在其他框架中(我習慣CakePHP),只需在users表中添加一個字段並修改模型文件和配置文件視圖即可。在symfony中......我不知道,這就是我在這裏問的原因。我相信我錯過了一些東西,因爲symfony設計師肯定已經考慮過在發佈後可能需要重構應用程序的想法。什麼是正確的方法來做到這一點?

回答

2

您需要查看遷移框架。這基本上是由創建描述模式更改的類組成的。你可以在這裏看到一個symfony 1.2教程:http://www.symfony-project.org/doctrine/1_2/en/07-Migrations,其中大部分對於1.4也是有效的。

+0

謝謝。它似乎比需要更復雜,特別是對於簡單的修改,但我認爲它會做。 – Andrea 2010-09-17 10:35:32

+1

另一種方法是手動更改數據庫並更改模式,但運行doctrine:build有不同的選項。如果你做「./symfony doctrine:build --all-classes」,它會更新模型,表單和過濾器類,但不會觸及數據庫。這不是做這件事的最好方法,但會在一個緊要關頭工作。 – lonesomeday 2010-09-17 11:22:28

+1

非常感謝:我猜這兩個選項都有它們的用處。可以手動進行快速更改,並使用Migrations的幫助進行更復雜的操作。 – Andrea 2010-09-17 23:08:34

0

當我的數據庫中有數據時,我從不使用build-all。我只是使用模型和build-sql的構建類,然後我更改數據庫,手動添加或更改字段。

0

遷移是正確的做法。但是,如果你不想使用遷移出於某種原因,另一個選擇是更新您的schema.yml,然後重建您的模型,等等這樣的:

symfony doctrine:build-model 
symfony doctrine:build-forms 
symfony doctrine:build-filters 
symfony doctrine:build-sql 

當您部署的代碼,你」您需要手動更新您的數據庫與任何您添加/更改的字段。