Laravel 遷移是管理資料庫架構變更的好方法。它們允許您對資料庫結構進行版本控制,並隨時間輕鬆回滾或修改變更。在本指南中,我們將逐步探索在 Laravel 中建立、運行和回滾遷移的過程,並提供一個實踐範例。
開始遷移之前,請確保已安裝 Laravel。您可以透過 Composer 執行此操作:
composer create-project --prefer-dist laravel/laravel migration-demo
然後導航到專案資料夾:
cd migration-demo
要設定資料庫,請在 Laravel 專案中開啟 .env 檔案並更新資料庫憑證:
DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=your_database_name DB_USERNAME=your_username DB_PASSWORD=your_password
配置資料庫後,如果本機環境尚不存在,您可以建立一個新資料庫。
您可以使用 artisan 指令建立新的遷移。例如,要建立使用者表遷移:
php artisan make:migration create_users_table
該指令在database/migrations目錄中產生一個遷移檔。檔案名稱將包含時間戳,類似於 2024_09_13_123456_create_users_table.php。
開啟產生的遷移檔案。你會發現兩個方法:up()(定義表格建立)和down()(定義表格如何回滾)。
建立使用者表格的範例:
<?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; class CreateUsersTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('users', function (Blueprint $table) { $table->id(); // Primary key $table->string('name'); $table->string('email')->unique(); $table->timestamp('email_verified_at')->nullable(); $table->string('password'); $table->rememberToken(); $table->timestamps(); // Created at & Updated at }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('users'); } }
在 up() 方法中,我們定義了 users 表的結構。 down() 方法定義了在回滾時如何刪除表格(即刪除表格)。
要執行遷移並在資料庫中建立使用者表,請使用下列命令:
php artisan migrate
此指令將執行所有尚未執行的遷移。您應該看到以下輸出:
Migrating: 2024_09_13_123456_create_users_table Migrated: 2024_09_13_123456_create_users_table (0.45 seconds)
您可以驗證使用者表是否已在資料庫中建立。
要回滾最近的遷移,請使用以下指令:
php artisan migrate:rollback
這將刪除使用者表或最近遷移批次中定義的任何表。
要回滾多個個遷移步驟,請使用:
php artisan migrate:rollback --step=2
這將回滾最後兩批遷移。
如果要修改現有資料表(例如新增列),請建立新的遷移:
php artisan make:migration add_phone_to_users_table --table=users
這將建立一個用於修改使用者表的遷移。然後您可以定義更改:
public function up() { Schema::table('users', function (Blueprint $table) { $table->string('phone')->nullable(); // Add phone column }); } public function down() { Schema::table('users', function (Blueprint $table) { $table->dropColumn('phone'); // Remove phone column }); }
運行遷移以應用變更:
php artisan migrate
Laravel 還允許您使用虛擬資料為資料庫播種。若要建立播種機,請使用:
php artisan make:seeder UsersTableSeeder
在位於database/seeders/UsersTableSeeder.php的播種器檔案中,您可以定義資料:
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Hash; class UsersTableSeeder extends Seeder { public function run() { DB::table('users')->insert([ 'name' => 'John Doe', 'email' => 'john@example.com', 'password' => Hash::make('password'), ]); } }
然後使用以下命令執行播種器:
php artisan db:seed --class=UsersTableSeeder
您也可以在遷移過程中透過呼叫 DatabaseSeeder.php 中的播種器來為資料庫播種。
重置資料庫並執行所有遷移和播種程式:
php artisan migrate:fresh --seed
此指令將刪除所有表,重新執行所有遷移,並為資料庫設定種子。
透過執行以下步驟,您可以使用遷移輕鬆管理 Laravel 中的資料庫架構變更。 Laravel 遷移是保持資料庫結構版本控制並在不同環境(如開發、登台和生產)之間同步的重要組成部分。
以上是使用遷移在 Laravel 中進行資料庫架構管理:深入教程的詳細內容。更多資訊請關注PHP中文網其他相關文章!