避坑!Laravel數(shù)據(jù)庫遷移功能的一個坑

下面由laravel教程欄目給大家介紹laravel 數(shù)據(jù)庫遷移功能的一個坑,希望對需要的朋友有所幫助!

  • 環(huán)境:Laravel 8
  • 需求用到 Laravel 數(shù)據(jù)庫遷移功能,因本人是強迫癥處女座所以喜歡自己命名文件例如:

避坑!Laravel數(shù)據(jù)庫遷移功能的一個坑

  • 但是在執(zhí)行遷移的時候報錯:

避坑!Laravel數(shù)據(jù)庫遷移功能的一個坑

  • 經(jīng)過幾輪嘗試發(fā)現(xiàn) Laravel 對遷移文件的 文件名命名格式 是有固定的解析的,所以當(dāng)我文件名完全按照它的風(fēng)格去寫的時候就正常運行了

避坑!Laravel數(shù)據(jù)庫遷移功能的一個坑

  • 當(dāng)然類名也必須統(tǒng)一:

避坑!Laravel數(shù)據(jù)庫遷移功能的一個坑

  • 吐槽的點在于:文檔中并沒有提及文件名稱命名風(fēng)格的強制要求 故今天記錄下此小坑
  • 貌似是另一個坑或者說是框架的不足:那就是表結(jié)構(gòu) 沒辦法持續(xù)集成,例如今天我需要對某個表加字段,但此時已經(jīng)遷移過了,那就會 沒辦法再次運行同一個遷移文件必須要創(chuàng)建新的遷移文件,當(dāng)然這我也理解這是為了方便回滾,但是我的需求就是為了新功能而持續(xù)加字段,并不需要回滾,所以我的 解決方案 就是每次都清空 migrations 這張表,因為這張表就是控制能否反復(fù)運行同一個遷移文件的地方,代碼如下:
trait Trait_Migrate {     /**      * @desc 數(shù)據(jù)表:初始化      * @return Void      */     static public function CI_Table_Structure() : Void     {         # 清空記錄表以保證能持續(xù)遷移         DB::table( 'migrations' ) -> truncate();         # 執(zhí)行遷移         Artisan::call( 'migrate --force --path=/database/migrations/' . SELF::$CI_File );     }  }
  • 總的來說完全按照框架文檔的規(guī)則來就會一帆風(fēng)順,可是做項目遇到框架默認功能無法滿足需求的情況是非常正常的

相關(guān)推薦:最新的五個Laravel視頻教程

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點贊12 分享