哈! 用個小故事來當引言好惹~~😊
從前,有一個小鎮,住著許多熱愛看書小精靈👻。他們每天都忙著搜尋各類書籍,讓小鎮變得更加有文學氣息。但因為書籍實在是太多了,該怎麼管理小精靈們的書籍呢?
某天,精靈們決定建造一間書店,於是開始建立一個管理書籍的系統,以便妥善收藏和查詢每本書📚。他們知道,Migration 能幫助他們輕鬆地新增和修改內容,並確保每位精靈在不同地方都能看到相同的書籍系統。接下來,讓我們一起看看精靈們如何完成建立、修改和刪除書籍系統的資料表。
小精靈們首先使用魔法指令 php artisan make:migration
來生成一個新的管理表格,命名為 create_books_table
,這樣就能妥善記錄所有書籍資訊,讓書店的運作變得有條不紊。
php artisan make:migration create_books_table
以下是這段管理表格的內容:
books
。
title
)author
)published_year
),timestamps
)use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateBooksTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('books', function (Blueprint $table) {
$table->id(); // 書籍ID
$table->string('title'); // 書名
$table->string('author'); // 作者
$table->integer('published_year'); // 出版年份
$table->timestamps(); // 時間戳記
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('books'); // 刪除books資料表
}
}
隨著書籍數量的增長,小精靈們發現需要為每本書增加一個 genre
(類別)欄位,這樣他們就能夠更好地分類書籍。於是,他們使用了魔法指令 php artisan make:migration
創建了一個新的 Migration 來修改資料表,表格取名為 add_genre_to_books_table
php artisan make:migration add_genre_to_books_table
在 AddGenreToBooksTable
檔案中,這段程式碼會在 books
資料表中添加一個 genre
欄位,並允許其為空值。如果需要回滾變更,可以用 down()
方法刪除這個欄位。
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class AddGenreToBooksTable extends Migration
{
public function up()
{
Schema::table('books', function (Blueprint $table) {
$table->string('genre')->nullable(); // 新增genre欄位
});
}
public function down()
{
Schema::table('books', function (Blueprint $table) {
$table->dropColumn('genre'); // 刪除genre欄位
});
}
}
可是有一天,精靈們覺得不想再看書了,決定使用 Schema::drop()
方法來刪除整個 books
資料表:
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class DropBooksTable extends Migration
{
public function up()
{
Schema::dropIfExists('books'); // 刪除books資料表
}
public function down()
{
// 如果需要,這裡可以重新創建資料表
Schema::create('books', function (Blueprint $table) {
$table->id(); // 書籍ID
$table->string('title'); // 書名
$table->string('author'); // 作者
$table->integer('published_year'); // 出版年份
$table->timestamps(); // 時間戳記
});
}
}
當小精靈們完成上述書店表格的設計後,他們需要將這些變更實施。於是,他們使用了以下魔法指令,讓所有變更生效:
php artisan migrate
不久後,精靈們在某次修改中發現了一個錯誤,需要將變更回退。這時,他們使用了另一個指令來回滾最近的變更:
php artisan migrate:rollback
這個咒語能夠迅速將最近的一次 Migration 變更撤回,恢復資料庫的狀態。小精靈們學會了這些指令後,對管理書籍資料變得更加輕鬆愉快了。
參考資料
踏著身心靈的塔羅腳步,轉向技術與邏輯的工程師之路,就藉由塔羅日抽來紀錄今日的學習與生活吧!
權杖五:在資料庫管理中,版本控制的衝突就像權杖五所代表的混亂,容易讓團隊成員感到困惑。使用 Migrations 可以幫助團隊清楚地定義和共享資料庫架構,這樣不僅減少混亂,還能提升合作效率。
不會飛的豬,就只是平凡的豬。—《紅豬🐽》