今天讓我們探討「缺乏 Migration Files 與 Factory Files」的 Legacy 情境吧!
很多時候我們會遇到沒有 Migration Files 或 Factory Files 的 Legacy Codebase,原因大概有以下幾種:
- 該程式庫原本不是以 Laravel 進行開發,可能是別的 PHP 框架,或甚至是別的語言,後來才改為使用 Laravel 進行開發。
- 之前的開發者沒有使用 Migration 來建立資料庫,而是用手動的方式建立及調整資料庫架構。
- 之前的開發者有用 Migration 來建立資料庫,但因為沒有導入自動化測試機制,因此沒有為各 Model 建立對應的 Factory Files。
Migration Files 生成套件
針對「缺乏的 Migration Files」 情境,kitloong/laravel-migrations-generator 這個套件可以幫助我們針對已存在資料庫,以程式的方式產生 Migration File,步驟如下:
首先讓我們安裝 kitloong/laravel-migrations-generator
這個套件:
composer require --dev "kitloong/laravel-migrations-generator"
接著依照 Migration Files 缺乏的情境來看:
- 假如缺乏全部的 Migration Files,此時可執行以下指令,讓
kitloong/laravel-migrations-generator
連上預設資料庫連線,並依據各資料表的欄位架構,生成對應的 Migration File:
php artisan migrate:generate
- 假如是缺乏部分的 Migration Files,則可使用指定或排除資料表的方式,來生成對應的 Migration File:
# 假設資料庫中有 table1,table2,table3,table4,table5
# 其中 table1, table2 已有 Migration File
# 指定要生成的資料表
php artisan migrate:generate --tables="table3,table4,table5"
# 或是用排除的
php artisan migrate:generate --ignore="table1,table2"
- 指定 Connection:
php artisan migrate:generate --connection="connection_name"
實際上它還有其他好用的模式可用,這邊只講述最重要的部分,其他的部分大家可到它的 Github 上瀏覽。
Factory Files 生成套件
針對「缺乏的 Migration Files」 情境,另一個 TheDoctor0/laravel-factory-generator 套件可幫助我們生成 Factory Files,步驟如下:
首先同樣先讓我們安裝 TheDoctor0/laravel-factory-generator
這個套件:
composer require thedoctor0/laravel-factory-generator --dev
接著依照 Factory Files 缺乏的情境來看:
- 假如缺乏所有 Model 的 Factory File,可以用以下指令一鍵生成:
php artisan generate:factory
- 假如是缺乏部分 Model 的 Factory File,則可使用以下指令
# 僅生成 User 及 Company
php artisan generate:factory User Company
以上就是今天的介紹,希望對大家有所幫助!
如果您喜歡這篇文章,歡迎加入追蹤以接收新文章通知 😄