昨天我們學會了用 Migration 建立與修改資料表,今天要來聊一個很方便,但用錯地方會很危險的指令:rollback
在 Laravel 裡,php artisan migrate:rollback
代表「回滾」最近一次的 Migration
它會:
這就像你剛裝潢好房子(Migration),rollback 就是「拆掉裝潢並回到之前的狀態」,但家具(資料)也會跟著消失!
--step
精準回退
php artisan migrate:rollback --step=1
--step=1
只回滾最近一次的 Migration,比較安全
如果只是要修改欄位(新增、刪除、改名稱),不要 rollback,而是寫一個新的 Migration
新增 status
欄位到 orders
資料表
php artisan make:migration add_status_to_orders_table --table=orders
打開生成的檔案,修改:
public function up()
{
Schema::table('orders', function (Blueprint $table) {
$table->string('status')->default('pending');
});
}
public function down()
{
Schema::table('orders', function (Blueprint $table) {
$table->dropColumn('status');
});
}
執行:
php artisan migrate
這樣就能安全修改,不會影響其他資料!
Rollback 與安全修改
建立一張測試資料表
php artisan make:migration create_test_table
migrate 並新增假資料
php artisan migrate
試著 rollback 看資料會不會消失
php artisan migrate:rollback
改用安全方式新增欄位