下面給大家介紹Laravel 數(shù)據(jù)庫遷移功能的一個坑,希望對需要的朋友有所幫助!
環(huán)境:Laravel 8
需求用到 Laravel 數(shù)據(jù)庫遷移功能,因本人是強迫癥處女座所以喜歡自己命名文件例如:
但是在執(zhí)行遷移的時候報錯:
經(jīng)過幾輪嘗試發(fā)現(xiàn) Laravel 對遷移文件的 文件名命名格式 是有固定的解析的,所以當我文件名完全按照它的風格去寫的時候就正常運行了
當然類名也必須統(tǒng)一:
吐槽的點在于:文檔中并沒有提及文件名稱命名風格的強制要求 故今天記錄下此小坑
貌似是另一個坑或者說是框架的不足:那就是表結(jié)構(gòu) 沒辦法持續(xù)集成,例如今天我需要對某個表加字段,但此時已經(jīng)遷移過了,那就會 沒辦法再次運行同一個遷移文件必須要創(chuàng)建新的遷移文件,當然這我也理解這是為了方便回滾,但是我的需求就是為了新功能而持續(xù)加字段,并不需要回滾,所以我的 解決方案 就是每次都清空 migrations 這張表,因為這張表就是控制能否反復運行同一個遷移文件的地方,代碼如下:
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ī)則來就會一帆風順,可是做項目遇到框架默認功能無法滿足需求的情況是非常正常的