將 Laravel 舊專案的 unsignedInteger 更換為 unsignedBigInteger

在 Laravel 5.8 開始後 primary ID 欄位的預設類型從 INT 更改為 BIGINT,這造成新建立的 Migration 使用 Foreign Key 使仍然得遷就於舊的資料型態。如果你的專案很大,你曾經想要手動更改這些欄位屬性卻發現更改起來很麻煩,那麼你可以使用 axn/laravel-pk-int-to-bigint 這個工具。這個工具讓你在 Laravel 項目中將數據庫主鍵和相關的外鍵類型從 INT 轉換為 BIGINT。

項目分 4 個步驟進行

  1. 數據庫的內外鍵完整性的驗證
  2. 刪除每個表上的所有外鍵約束
  3. 在每個表的主鍵和外鍵列上將 INT 轉換為 BIGINT
  4. 恢復每個表上的所有外鍵約束

使用 composer 安裝

composer require axn/laravel-pk-int-to-bigint

手動更改

php artisan pk-int-to-bigint:transform

使用 Migration 更改

php artisan vendor:publish --tag="pk-int-to-bigint-migration"

未來在發布的流程中執行 migration

php artisan migrate