06.30 「PHP編程」Phinx——數據庫遷移利器

「PHP編程」Phinx——數據庫遷移利器

前言

通常,我們創建、修改MySQL數據表結構,都是使用PHPMyAdmin或者Navicat等數據庫管理工具來操作。這在開發者只有一個的時候沒有什麼問題,但是如果團隊中有多個開發者,這樣可能就會有問題了。這時候,我們可能就需要導出表結構,然後傳給團隊中其他人,讓他們再把數據表結構導入他們的數據庫。這樣一來,不僅增加了操作的複雜度,而且增加了出現問題的可能性。比如,如果某些表存在舊數據可能就會導致其字段類型不能修改,或者從MySQL向Oracle進行數據遷移時,數據不完整等。

這些問題的出現,其主要原因是我們直接使用SQL語句操作數據庫,但沒有遵循統一標準。那有沒有一種方法,可以不直接使用SQL語句操作數據庫,卻能達到遷移數據的目的呢?

毋庸置疑,肯定是有的。PHP框架Laravel中就有使用PHP操作進行數據遷移的做法。我最近使用了一下,非常方便簡潔。如下:

「PHP編程」Phinx——數據庫遷移利器

以上圖中操作就是一個創建 flights 表的簡單示例,其中up方法是創建數據表,down方法是刪除數據表。正式部署時,只要執行如下命令就可以在正式環境創建相同的數據表fligths了。

「PHP編程」Phinx——數據庫遷移利器

很簡單有木有?

不過遺憾的是,Laravel的這一套數據遷移操作,內嵌在其框架裡面。如果你不是使用Laravel框架,要想使用它還有點麻煩。俗話說方法總比困難多。最近我又發現一個可以進行類似數據遷移操作的庫——Phinx。這個PHP庫允許開發者以一種清晰、簡潔的方式來修改和操作數據庫。它提供了一個強大的API,你無需手工編寫SQL,使用PHP代碼來創建代碼進行遷移就可以了。Phinx代碼遷移可以移植於不同數據庫系統,如MySQL、Oracle、SQL Server等,Phinx會對已經進行過的代碼遷移進行跟蹤,這樣你就可以少擔心數據庫的狀態,而專注於開發更好的軟件。

安裝使用

Phinx使用composer進行管理,要求PHP版本在5.4以上。如果你已經安裝了composer,可以執行以下命令來安裝phinx:

php composer.phar require robmorgan/phinx

安裝完畢後,執行如下命令,進行初始化:

vendor\\bin\\phinx init

初始化完畢後,在項目根目錄會生成一個phinx.yml文件。這個phinx.yml文件是phinx配置文件,裡面記錄了數據庫的相關配置,使用時要將裡面的參數改成自己的參數。

「PHP編程」Phinx——數據庫遷移利器

設置好配置文件後,我們開始創建我們的第一個數據庫遷移,如下:

vendor\\bin\\phinx create MyNewMigration

執行了此命令後,在db\\migrations目錄會生成一個數據庫遷移文件,如下:

「PHP編程」Phinx——數據庫遷移利器

其中,會自動生成一個update方法。方法update表示修改表,方法up表示創建新表,方法down表示刪除表。

如果你的遷移文件創建完畢,你可以執行如下命令進行數據遷移:

vendor\\bin\\phinx migrate -e development

其中,-e development表示指定運行環境為開發環境,與phinx.yml配置文件一一對應。

執行以上命令後,就可以使用PHP進行數據遷移了。

這只是一個簡單的使用實例,其實phinx可以做的還有很多,如設置斷點、數據回滾等,這裡我就不進行詳解了,大家如果想看更多內容,可以訪問如下官方鏈接:

http://docs.phinx.org/en/latest/intro.html


分享到:


相關文章: