拯救老舊 Laravel 專案!將資料庫的 Primary Key 從 INT 轉為 BIGINT

在 2019 年的 Laravel 5.8 版本中,Laravel 將資料庫主鍵的資料型態預設從 INT 改為 BIGINT 類型。這導致如果你將專案升級至 5.8 以上後,每當你想要新增新的 Model 時,所有 Migration 預設 ID 會是使用 $table->id() 或是 $table->bigIncrements('id'); 會產生出 BIGINT 類型,因此當你想要將這個 ID 與舊有的表格做 Foreign Key 關聯時,便會出現類型無法對照的錯誤訊息。

我們可以使用這個 axn/laravel-pk-int-to-bigint 工具來將我們專案中所有的主鍵 INT 改為 BIGINT 類型

透過 composer 安裝

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

於 2023-05-13 安裝時,專案需要為 doctrine/dbal 3.0 以上,否則會無法安裝。

開始執行

php artisan pk-int-to-bigint:transform