什麼是 Migration
Migration 就像資料庫的版本控管。 它讓團隊能夠共享、管理應用程式的資料庫綱要定義。 你或許曾遇過拉取原始碼後,還得請團隊成員手動在本機資料庫加欄位的情境。 Migration 就是解決這問題的辦法。 Migration 檔案存放在database/migrations 目錄。
每個檔名都包含時間戳,Laravel 會依此決定執行順序。
建立 Migration 檔
以make:migration Artisan 指令建立新的 migration 檔。
create_posts_table,範本會事先產生用於建立 posts 資料表的程式碼。
Migration 結構
Migration 類別具有up 與 down 兩個方法。
up:對資料庫新增資料表、欄位、索引。down:將up的操作反轉,回滾時執行。
主要欄位定義方法
Blueprint 類別提供大量欄位類型。
欄位修飾子
可用方法鏈附加欄位修飾子。執行 Migration
用migrate 執行所有未執行的 migration。
migrate:status。
回滾
用migrate:rollback 可回滾最近一批 migration。
--step。
migrate:refresh。
migrate:refresh 會重建所有資料表,既有資料會遺失。
適合開發期重置資料庫。實戰範例:建立 posts 資料表
以管理部落格文章的posts 資料表為例,走過一次完整流程。
1. 產生 migration 檔
2. 編輯 migration
打開database/migrations/xxxx_xx_xx_xxxxxx_create_posts_table.php 編輯。
3. 執行 migration
posts 資料表。
4. 之後新增欄位
若在資料表建立後要新增欄位,別直接修改既有 migration,改為建立新的 migration。Migration 事件
每一次 migration 操作都會發送事件。所有事件皆繼承Illuminate\Database\Events\MigrationEvent。
例如可監聽
MigrationsEnded,在 migration 結束後清除快取。
下一步
資料庫 Seeding
學習如何為 migration 建好的資料表匯入範例資料。
Eloquent 入門
學習如何以 Eloquent ORM 操作 migration 建好的資料表。