2010-12-03 73 views
4

我想在我的環境中部署Doctrine遷移以處理多個開發人員之間的數據庫更改。我以前沒有用過它們,但是我已經完成了對這個問題的研究。Doctrine Migrations Re。 Fixtures

我現在唯一關心的是[據我所知]原則遷移不允許修改夾具。雖然我意識到遷移是用於原理圖變更的,但我認爲夾具變更同樣重要。

我想參考表的燈具是我的數據庫(即* _type,* _source等),我覺得行添加/刪除/更新也應該由這些遷移來處理,因爲它們是與任何結構性變化一樣重要。

如果有人能指出我在這裏正確的方向,它將不勝感激。

更新

我探索的只是讓SVN跟蹤我的參考表燈具的想法,但是這將是是一個undeployable解決方案。由於外鍵約束,表格將無法被截斷/重新填充。

回答

2

正如您所指出的那樣,遷移是爲了便於對數據庫進行結構更改,而不是根據它們操縱您的夾具數據。

根據我的經驗,在開發應用程序時使用遷移不一定是最有效的方式,特別是如果開發人員A創建新遷移並且不立即提交,並且開發人員B還創建新的遷移(不知不覺)與開發者A的遷移衝突,然後立即檢查。開發人員A很快就會檢查他(或她)的遷移情況,並且你有兩個相互衝突的遷移,並且全球都在爆炸。

我想說,更好的方法(儘管更加冗長)可以在schema.yml中進行模式更改,應用模式更改(使用私有遷移或手動方式),然後提交您的夾具數據。

如果您選擇在開發中進行遷移,也許您應該考慮使用Doctrine Migration類的->postUp()->preUp()方法來原位轉換您的數據。

+0

這似乎正是我正在尋找的(參考http://www.doctrine-project.org/projects/orm/1.2/docs/manual/migrations/en#writing-migration-classes:pre-and -post-鉤)。謝謝,賈明先生。 此外,雖然您的方法似乎是更好的方法,但我不確定將定期結構更改轉換爲生產是多麼容易。 – Craige 2010-12-08 13:51:19