Laravel框架的開發方式有著敏捷、迭代的特點,並且不指望在第一次就獲得所有正確的程式碼。相反,我們編寫程式碼、測試和與我們的最終用戶進行交互,並完善我們的理解。
對於工作,我們需要一個配套的實踐集。我們使用像subversion、GIT或Mercurial這些版本控制工具來儲存應用程式的原始碼文件,使我們能夠撤消錯誤和追蹤開發過程中的變更。
但應用程式更改時,存在我們不能單獨使用版本控制進行有效管理的區域。在我們的開發進度中,Laravel應用程式的資料庫架構不斷演變:我們在這裡新增了一個表,在那裡重命名列,刪除索引等等。資料庫的變更與應用程式程式碼步調一致。
你需要一個複雜的方法來追蹤您的資料庫架構更改,通常有幾種方法:
當您在開發團隊內工作時,每人都需要知道關於任何架構的變更。
當你在生產伺服器上部署時,您需要有穩健的方式來升級您的資料庫架構。
如果您在多台機器上工作,你需要保持所有資料庫架構的同步。
如果沒有嚴格的約定和紀律讓應用程式開發者遵循,保持資料庫架構與應用程式程式碼同步歷來是一個非常麻煩的工作。開發者(或資料庫管理員) 進行所需的架構變更。但是,如果應用程式程式碼回滾到先前的版本,但是很難撤銷資料庫架構更改,照成資料庫版本資訊與應用程式程式碼版本資訊不一致。
遷移就是幫助你進化你的應用程式資料架構的Laravel方式,它不需要你在每次改變的時候刪除或重建資料庫。沒有刪除和重建就意味著你不會在每次改變的時候丟失資料。當你執行遷移時唯一的改變就是將資料庫架構從一個版本移到另一個版本,不管是向前或向後移。
Laravel遷移給你提供了一種在迭代方式中修改資料庫架構的手段,它不要你用SQL操作,而是允許你使用PHP程式碼。 Laravel架構產生器可讓我們快速建立資料庫表和插入列或索引。它使用清潔和富有表現力的語法來操作資料庫。你也許為認為Laravel遷移就是資料庫的版本控制。
透過定義一個更高層級的介面來建立和維護資料庫架構,你可以用與資料庫無關的方式定義它。透過使用 PHP 來建立表,定義列和索引,寫一次架構並將其應用到任何支援的資料庫後端。額外的好處是 ,Laravel 追蹤已經應用了哪些遷移和哪些仍需要應用。
一個Laravel遷移只是你應用程式app/database/migrations目錄下的PHP原始檔。每個文件都包含了對底層資料庫的一組變更。對資料庫的改變是在PHP程式碼中而不是資料庫特定的SQL。你的PHP遷移程式碼最終會轉換成符合你目前資料庫的DDL,這使得切換資料庫平台非常的容易。由於遷移程式碼保存在自己的目錄中,因此就務必要像其他的專案程式碼一樣包含到版本控制裡面。 Laravel遷移是使用Artisan工具用命令列顯示運行的。
在舊版Laravel的,遷移的檔案有比較簡單的名字,如001_create_employees_table.php 。 Laravel 3(Laravel 4.1和其相同)帶來了新的命名約定,其中名稱的第一部分從一個序號變更為更長的時間,像2014_03_11_032903_create_employees_table.php。該檔案的名稱的形式YYYY_MM_DD_HHMMSS_some_meaningful_name.php的,也就是說一個UTC時間戳識別後面跟著一個遷移名。
新的更寬的名字有助於避免名稱衝突,如果你是工作在一個團隊裡的一個開發人員,你可以檢查自己的遷移。
此外, Laravel遷移檔案的時間戳,以便他們可以順序執行。時間戳數字是遷移的關鍵,因為它們定義了哪一個遷移應用在獨立遷移版本號碼的順序。
想SQL腳本,遷移從頂部開始執行,這更需要這些檔案才能執行。順序執行移除了類似這樣的可能性-在表格不存在的時候嘗試插入列。
儘管你可以手動建立遷移文件,但是使用Artisan工具產生遷移腳本更加的容易(且不易出錯)。你可以根據需要在以後編輯這些文件。
使用Artisan工具遷移到資料庫。 Laravel提供了一套artisan任務,可以歸結為運行特定的幾套遷移。
[註]你可以執行artisan list相同查看artisan支援的任務列表,大多數資料遷移相關的任務都帶有前綴migrate:。
只有幾個你需要知道的常見任務:
migrate:install
你第一次使用的與遷移有關的artisan任務可能就是migrate:install。在內部,Laravel使用特殊的表來追蹤哪些遷移已經運行。若要建立此表,只需要使用artisan命令列工具:
$php artisan migrate:install
migrate
你將會執行migrate任務頻繁的更新你的資料庫,以支援你添加到應用程式中的最新的表和列。最基本的形式,它只會對那些所有沒有被運行過的遷移運行up()方法。如果沒有這樣的遷移,會退出。它將基於遷移的日期來運行這些遷移。
migrate:rollback
在寫入遷移時偶爾也會犯錯。如果你已經運行了遷移,那麼你不能只是編輯遷移和再次運行遷移:Laravel假定它已經運行了遷移,那麼當你再次運行artisan
migrate,不會做任何事。你必須使用artisan
migrate:rollback回滾遷移,然後編輯遷移,再運行artisan
migrate去運行正確的版本。
一般情況下,編輯現有的遷移不是好主意:你和你的同事將會需要額外的工作,並且這是一件讓人頭痛的事——如果現存版本的遷移已經運行在生產機器上。相反,你需要寫一個新的遷移去執行所需的改變。
[註]artisan migrate:rollback 會刪除上次的遷移應用程式。 Laravel回去整個遷移「操作」。因此,如果上次的遷移指令運行了15個遷移,這15個遷移都會被回滾。請注意,當你刪除列或表,會遺失資料。
migrate:reset
回滾所有的遷移(會刪除所有表和資料)
migrate:refresh
artisan migrate:refresh任務將刪除資料庫、重新建立它並將載入目前架構。這是一個方便快捷方式去運行重置並隨後重新運行所有遷移。
migrate:make
artisan migrate:make指令告訴
Laravel 來產生一個遷移檔案骨架 (這是實際上是一個
PHP 檔案) ,存放到app/database/migrations資料夾中。然後,您可以編輯此文件來充實您的表/索引定義。然後,artisan
migrate指令執行時,artisan會查詢此檔案來生成
SQL DDL 的實際程式碼。
相關推薦:
laravel5如何透過freetds來連接到sqlserver(程式碼)
#以上是Laravel框架中資料庫與資料庫遷移簡單分析的詳細內容。更多資訊請關注PHP中文網其他相關文章!