artisan 命令使用總結(jié)
artisan 命令使用過程的一些記錄!
==數(shù)據(jù)遷移==
之前一直對數(shù)據(jù)遷移很感興趣,也看過了幾遍文檔,一直沒怎么理解,也沒怎么深入研究,今天得空,認(rèn)真看了文檔,百度了一些相關(guān)文章 點(diǎn)擊這里,親自試了一些常用的操作,特寫此文章記錄
遷移的創(chuàng)建、執(zhí)行和回滾
- 創(chuàng)建遷移
php artisan make:migration create_news_table
錯(cuò)誤寫法:
php artisan migrate:make create_news_table
示例結(jié)果:

- 執(zhí)行遷移
php artisan migrate
示例結(jié)果:

如果繼續(xù)執(zhí)行 php artisan migrate ,因?yàn)闆]有新的可執(zhí)行 migrate ,將不執(zhí)行任何動(dòng)作
示例結(jié)果:

- 執(zhí)行回滾
php artisan migrate:rollback
示例結(jié)果:

- 執(zhí)行修改字段類型
執(zhí)行修改字段類型的時(shí)候需要composer requires doctrine/dbal
安裝doctrine/dbal:

數(shù)據(jù)庫的記錄(migrations)
- 數(shù)據(jù)庫記錄如下
每執(zhí)行一次遷移(php artisan migrate),batch 加 1(不管這次執(zhí)行了幾個(gè)遷移文件,一次執(zhí)行的文件batch 一樣),
數(shù)據(jù)庫保存結(jié)果如下:

如果執(zhí)行回滾,數(shù)據(jù)庫最近一次執(zhí)行的所有遷移將進(jìn)行回滾,回滾完成,數(shù)據(jù)庫遷移記錄結(jié)果將會被刪除!如果手動(dòng)刪除數(shù)據(jù)庫記錄,則回滾的時(shí)候,將不對該遷移回滾,并且對應(yīng)的遷移在再次執(zhí)行 php artisan migrate的時(shí)候?qū)匦卤粓?zhí)行,所以最好不要隨意刪除 migrations 表中的數(shù)據(jù)
執(zhí)行遷移回滾原理
通過artisan 建立的遷移文件中包括兩個(gè)function (up,down),其中up 是在執(zhí)行遷移的時(shí)候執(zhí)行的,而down 也剛好就是對立的,回滾的時(shí)候執(zhí)行
示例:
例如1:
public function up(){
//創(chuàng)建表,執(zhí)行遷移的時(shí)候執(zhí)行
Schema::create('users', function (Blueprint $table) {
$table->increments('id');
});
}
public function down(){
//刪除表,回滾的時(shí)候執(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í)候再修改成原來的
});
}
總結(jié)
- 遷移是用來記錄每次的數(shù)據(jù)庫操作的,不管是創(chuàng)建表,還是修改一個(gè)字段名稱,都需要單獨(dú)創(chuàng)建一個(gè)遷移文件
- 遷移文件中,包含一個(gè)up 和一個(gè)down,是兩個(gè)對立的方法,如果up創(chuàng)建表,down就是刪除表,反之亦然!
- 每次執(zhí)行遷移都會記錄到遷移記錄表中(magrition 表),回滾則刪除相應(yīng)記錄通過batch 來判斷是那一批遷移
其他相關(guān)artisan 隨后更新