artisan 命令使用總結
artisan 命令使用過程的一些記錄云稚!
==數(shù)據(jù)遷移==
之前一直對數(shù)據(jù)遷移很感興趣,也看過了幾遍文檔沈堡,一直沒怎么理解静陈,也沒怎么深入研究,今天得空诞丽,認真看了文檔鲸拥,百度了一些相關文章 點擊這里,親自試了一些常用的操作僧免,特寫此文章記錄
遷移的創(chuàng)建刑赶、執(zhí)行和回滾
- 創(chuàng)建遷移
php artisan make:migration create_news_table
錯誤寫法:
php artisan migrate:make create_news_table
示例結果:
Paste_Image.png
- 執(zhí)行遷移
php artisan migrate
示例結果:
Paste_Image.png
如果繼續(xù)執(zhí)行 php artisan migrate ,因為沒有新的可執(zhí)行 migrate 懂衩,將不執(zhí)行任何動作
示例結果:
Paste_Image.png
- 執(zhí)行回滾
php artisan migrate:rollback
示例結果:
Paste_Image.png
- 執(zhí)行修改字段類型
執(zhí)行修改字段類型的時候需要composer requires doctrine/dbal
安裝doctrine/dbal:
Paste_Image.png
數(shù)據(jù)庫的記錄(migrations)
- 數(shù)據(jù)庫記錄如下
每執(zhí)行一次遷移(php artisan migrate)撞叨,batch 加 1(不管這次執(zhí)行了幾個遷移文件金踪,一次執(zhí)行的文件batch 一樣),
數(shù)據(jù)庫保存結果如下:
Paste_Image.png
如果執(zhí)行回滾牵敷,數(shù)據(jù)庫最近一次執(zhí)行的所有遷移將進行回滾胡岔,回滾完成,數(shù)據(jù)庫遷移記錄結果將會被刪除枷餐!如果手動刪除數(shù)據(jù)庫記錄靶瘸,則回滾的時候,將不對該遷移回滾毛肋,并且對應的遷移在再次執(zhí)行 php artisan migrate的時候將會重新被執(zhí)行怨咪,所以最好不要隨意刪除 migrations 表中的數(shù)據(jù)
執(zhí)行遷移回滾原理
通過artisan 建立的遷移文件中包括兩個function (up,down),其中up 是在執(zhí)行遷移的時候執(zhí)行的村生,而down 也剛好就是對立的惊暴,回滾的時候執(zhí)行
示例:
例如1:
public function up(){
//創(chuàng)建表,執(zhí)行遷移的時候執(zhí)行
Schema::create('users', function (Blueprint $table) {
$table->increments('id');
});
}
public function down(){
//刪除表趁桃,回滾的時候執(zhí)行
Schema::drop('users');
}
例如2:
public function up()
{
Schema::table('users', function($table) {
$table->renameColumn('email', 'user_email'); //修改字段名稱
});
}
public function down()
{
Schema::table('news', function($table) {
$table->renameColumn('user_email', 'email'); //回滾的時候再修改成原來的
});
}
總結
- 遷移是用來記錄每次的數(shù)據(jù)庫操作的辽话,不管是創(chuàng)建表,還是修改一個字段名稱卫病,都需要單獨創(chuàng)建一個遷移文件
- 遷移文件中油啤,包含一個up 和一個down,是兩個對立的方法蟀苛,如果up創(chuàng)建表益咬,down就是刪除表,反之亦然帜平!
- 每次執(zhí)行遷移都會記錄到遷移記錄表中(magrition 表),回滾則刪除相應記錄通過batch 來判斷是那一批遷移
其他相關artisan 隨后更新