原做者:Stable Host, LLCphp
正文:laravel
Laravel鼓勵敏捷、迭代的開發方式,咱們沒期望在第一次就得到全部正確的。相反,咱們編寫代碼、測試和與咱們的最終用戶進行交互,並完善咱們的理解。數據庫
對於工做,咱們須要一個配套的實踐集。咱們使用像subversion、GIT或Mercurial這些版本控制工具來存儲應用程序的源代碼文件,使咱們可以撤消錯誤和追蹤開發過程當中的改變。後端
但應用程序更改時,存在咱們不能單獨使用版本控制進行有效管理的區域。在咱們的開發進度中,Laravel應用程序的數據庫架構不斷演變:咱們在這裏添加了一個表,在那裏重命名列,刪除索引等等。數據庫的改變與應用程序代碼步調一致。服務器
你須要一個複雜的方法來跟蹤您的數據庫架構更改,一般有幾種方法:架構
若是沒有嚴格的約定和紀律讓應用程序開發者遵循,保持數據庫架構與應用程序代碼同步從來是一個很是麻煩的工做。開發者(或數據庫管理員) 進行所需的架構更改。可是,若是應用程序代碼回滾到之前的版本,可是很難撤消數據庫架構更改,照成數據庫版本信息與應用程序代碼版本信息不一致。app
遷移就是幫助你進化你的應用程序數據架構的Laravel方式,它不須要你在每次改變的時候刪除或者重建數據庫。沒有刪除和重建就意味着你不會在每次改變的時候丟失數據。當你執行遷移時惟一的改變就是將數據庫架構從一個版本移到另外一個版本,不論是向前仍是向後移。工具
Laravel遷移給你提供了一種在迭代方式中修改數據庫架構的手段,它不要你用SQL操做,而是容許你使用PHP代碼。Laravel架構生成器容許咱們快速建立數據庫表和插入列或索引。它使用清潔和富有表現力的語法來操做數據庫。你也許爲認爲Laravel遷移就是數據庫的版本控制。測試
經過定義一個更高級別的接口來建立和維護數據庫架構,你能夠用與數據庫無關的方式定義它。經過使用 PHP 來建立表,定義列和索引,寫一次架構並將其應用到任何所支持的數據庫後端。額外的好處是 ,Laravel 跟蹤已經應用了哪些遷移和哪些仍須要應用。spa
一個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:。
只有幾個你須要知道的常見任務:
通常狀況下,編輯現有的遷移不是好主意:你和你的同事將會須要額外的工做,而且這是一件讓人頭痛的事——若是現存版本的遷移已經運行在生產機器上。相反,你須要寫一個新的遷移去執行所需的改變。
[注]artisan migrate:rollback 會刪除上次的遷移應用。Laravel回去整個遷移「操做」。所以,若是上次的遷移命令運行了15個遷移,這15個遷移都會被回滾。請注意,當你刪除列或者表,會丟失數據。
接下來會詳細描述數據庫遷移
未完待續……