laravel遷移文件的命令
Laravel鼓勵敏捷、迭代的開發方式,我們沒指望在第一次就獲得所有正確的。
我們對于自己編寫代碼,可以通過遷移文件,不斷的重復去測試.
對于工作,我們開發一個完整的項目,是需要我們每個人相互配合,就好比用svn,git版本控制工具來存儲應用程序的源代碼文件,使我們能夠撤消錯誤和追蹤開發過程中的改變。
但應用程序更改時,存在我們不能單獨使用版本控制進行有效管理的區域。在我們如果使用laravel框架開發項目,這個過程中,Laravel應用程序的數據庫架構不斷演變:如我們在這里添加了一個表,在那里重命名列,刪除索引等等,然后出現錯誤我們可以直接找到哪里出的錯,是誰操作的,便于直接解決問題和團隊開發.
當你需要一個復雜的方法來跟蹤您的數據庫架構更改,通常有幾種方法:
1.當您在開發團隊內工作時,每人都需要知道關于任何架構的更改。
2.當你在生產服務器上部署時,您需要有穩健的方式來升級您的數據庫架構。
3.如果您在多臺機器上工作,你需要保持所有數據庫架構的同步。
如果沒有嚴格的約定和紀律讓應用程序開發者遵循,保持數據庫架構與應用程序代碼同步歷來是一個非常麻煩的工作。開發者(或數據庫管理員) 進行所需的架構更改。但是,如果應用程序代碼回滾到以前的版本,但是很難撤消數據庫架構更改,照成數據庫版本信息與應用程序代碼版本信息不一致。
遷移就是幫助你進化你的代碼數據,它不需要你在每次改變的時候delete或者alert數據庫。沒有刪除和重建就意味著你不會在每次改變的時候丟失數據。當你執行遷移時唯一的改變就是將數據庫架構從一個版本移到另一個版本,不管是向前還是向后移,相對于svn這樣的。
Laravel遷移給你提供了一種在迭代方式中修改數據庫架構的手段,它不需要你用SQL操作,而是直接使用封裝好的類。Laravel架構生成器允許我們快速創建數據庫表和插入列或索引。它使用清潔和富有表現力的語法來操作數據庫。你也許為認為Laravel遷移就是數據庫的版本控制。
通過定義一個更高級別的接口來創建和維護數據庫架構,你可以用與數據庫無關的方式定義它。通過使用 PHP 來創建表,定義列和索引,寫一次架構并將其應用到任何所支持的數據庫后端。
以上參考Database Migration using Laravel
和自己的理解.
laravel 遷移文件基礎
laravel遷移文件是定義在laravel框架項目根目錄下database/migrations下,在這里可以進行表的創建,列的添加和刪除,版本的回退功能,直接用命令去操作,把遷移文件直接保存到目錄中方便操作,就好比把php代碼直接保存.但是在laravel中的遷移命令都是依靠Artisan工具去執行的.
laravel遷移文件的生成
一個非常見簡單的命令,但是我們需要使用laravel的artisan工具,同樣的也需要配置好我們的php環境,能夠在命令行中去執行,首先下面的是創建表的遷移文件php artian make:migration create_table_goods --create=goods

這個命令呢是創建一個叫做goods表的遷移文件,在命令行中去執行,成功之后,來到database/migration目錄中:

那么在up方法中可以執行添加列的語句如:
public function up() { Schema::create('goods', function (Blueprint $table) { $table->increments('id'); $table->string('email');//添加email字段 $tbale->integer('mobile');//添加moble字段 $table->timestamps(); }); }
那么怎么生成呢?php artisan migrate //執行所有的遷移文件的命令
在項目根目錄執行這個命令,成功,去查看自己的數據庫,多出一個goods表
假如我做項目,做到一半發現這個表中,缺少一個那么的字段,那怎么辦呢,手動去數據庫中添加么,不用的?我們還可以用遷移文件去完成php artisan make:migration add_name_to_goods --table=goods

在命令行中去執行成功之后來到遷移文件目錄下

public function up() { Schema::table('goods', function (Blueprint $table) { $table->string('name');//添加name字段 }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::table('goods', function (Blueprint $table) { $table->dropColumn('name');//刪除字段以便于后期修改錯誤一定要寫 });
再次執行遷移文件,發現goods表中多出一個name字段,說明我們添加成功
那么我們在看一下artisan其他的命令
migrate:install在內部,Laravel使用特殊的表來跟蹤哪些遷移已經運行。若要創建此表,只需要用artisan命令行工具:php artisan migrate:installmigrate你將會運行migrate任務頻繁的更新你的數據庫,以支持你添加到應用程序中的最新的表和列。最基本的形式,它只會對那些所有沒有被運行過的遷移運行up()方法。migrate:rollback在寫遷移時偶爾也會犯錯誤。如果你已經運行了遷移,那么你不能只是編輯遷移和再次運行遷移:Laravel假定它已經運行了遷移,那么當你再次運行artisan migrate,不會做任何事情。你必須使用artisan migrate:rollback回滾遷移,然后編輯遷移,再運行artisan migrate去運行正確的版本。migrate:reset回滾所有的遷移(會刪掉所有表和數據)migrate:refreshartisan migrate:refresh任務將刪除數據庫、 重新創建它并將加載當前架構。這是一個方便快方式去運行重置并隨后重新運行所有遷移。migrate:makeartisan migrate:make命令告訴 Laravel 來生成一個遷移文件骨架 (這是實際上是一個 PHP文件) ,存放到app/database/migrations文件夾中。然后,您可以編輯此文件來充實您的表/索引定義。然后,artisan migrate命令運行時,artisan會查詢此文件來生成 SQL DDL 的實際代碼。php artisan migrate --force: 強制執行最新的遷移文件
這就是laravel 遷移文件的強大之處,方便我們團隊去開發,省略不必要的麻煩