artisan 命令使用總結(jié)

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é)果:

Paste_Image.png
  • 執(zhí)行遷移
php artisan migrate

示例結(jié)果:

Paste_Image.png

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

示例結(jié)果:

Paste_Image.png
  • 執(zhí)行回滾
php artisan migrate:rollback

示例結(jié)果:

Paste_Image.png
  • 執(zhí)行修改字段類型

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

安裝doctrine/dbal:

Paste_Image.png

數(shù)據(jù)庫的記錄(migrations)

  • 數(shù)據(jù)庫記錄如下

每執(zhí)行一次遷移(php artisan migrate),batch 加 1(不管這次執(zhí)行了幾個(gè)遷移文件,一次執(zhí)行的文件batch 一樣),

數(shù)據(jù)庫保存結(jié)果如下:


Paste_Image.png

如果執(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 隨后更新

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容