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