2009-09-28 162 views
1

(如果需要,可以創建此CW) 我們是兩個開發基於Web應用程序(PHP5,ZF,Doctrine,MySQL5)的開發人員。我們每個人都有一個本地網絡服務器和一個本地數據庫。數據庫模式在YAML文件中定義。如何讓兩個開發數據庫與Doctrine同步?

保持我們的數據庫模式同步的最佳方式是什麼?

以下是我們的工作方式:無論何時開發人員「A」進行更改,他都會生成一個遷移課程。然後他提交遷移文件開發者「B」執行遷移類。

但是在每個數據庫更改上創建一個遷移類是一個相當乏味的過程。

你有更好的解決方案嗎?

回答

1

我不知道你如何在Zend Framework中使用Doctrine。以下是我將在Symfony中使用Propel進行的操作。雖然確切的程序可能會有所不同,但其基本概念是相同的。

我對我的DAL進行了單元測試。

每當架構更改,我們在陽明和生成的ORM代碼檢查(您有一個源頭控制,沒有你)。我將登機手續設置爲自動模式,這意味着我將立即獲得所有登機手續。

如果模式更改不會影響我的事情,那麼我會忽略這些更改。但是,如果模式更改會破壞我的東西,那麼我將通過使用symfony propel build command來重建我的表單,ORM類和其他類。重建這些基礎設施只是一個命令行的事情,所以對我來說沒有任何問題。

最後,重建後,我會運行我的單元測試,以確保一切正常。如果沒有,我最好讓他們修好!

+0

在你的設置中,你有你自己的本地數據庫副本嗎?如果是,每當模式更改時,重新從頭開始重建數據庫的本地副本? – 2009-10-07 13:24:09

+0

是的,這兩個問題 – Graviton 2009-10-07 13:53:05

0

我看到這個問題已經得到解答,但Doctrine可以將您的數據庫遷移給您,而不必將整個事情吹走。我們在每個模式更改中都使用它,其中一個開發人員更改其本地yaml文件,在本地生成新模型,使用Doctrine創建遷移,在本地運行遷移以更改數據庫,然後檢入新的yaml文件和遷移。然後其他開發人員檢查更改後的yaml文件和遷移,然後生成新模型並運行遷移以同步其數據庫。將代碼部署到我們的QA和生產環境幾乎是相同的過程。

有關Doctrine遷移的更多信息可在the Doctrine site上找到。