如果你開發了一個 A 功能需要把幾筆資料匯進資料庫中,你會怎麼做呢?

以下是你得考量的先決條件:

  1. 你得在開發環境 (develop)、測試環境 (stage)、正式環境 (production) 做到輕鬆匯入資訊
  2. 你的部署環境可能跨作業系統,且可能跨 HTTP 伺服器 (nginx, apache)
  3. 其他人要開發時也要得到這份資料,所以最好不要是手動匯入的
  4. 最好一行指令就能做到匯入資料,自動部署的時候直接呼叫該指令

為了做到上述要求,最後我自己統整了一個最簡單且能解決最多問題的方式 — Seeder + Migration。

為什麼使用 Seeder

  1. Seeder 可以透過指令執行 php artisan seed --class=UserDataSeeder
  2. 可以在 Seeder 內使用 Faker 填充一部分假資料
  3. 可以直接呼叫 Model 新增資料,也可以搭配自己寫的 Repo 或 Service

為什麼使用 Migration

  1. 可以透過指令執行 php artisan migrate

  2. 可以在 migration file 裡面執行 seeder

    $seeder = new PostDataSeeder();
    $seeder->run();
    
  3. 可以不在 migration 裡面操作 table scheme,單純執行 seeder

  4. migration 檔案在生成時有時間戳方便記錄