使用遷移在 Laravel 中進行資料庫架構管理:深入教程

DDD
發布: 2024-09-14 06:16:37
原創
1199 人瀏覽過

Database Schema Management in Laravel Using Migrations: An In-Depth Tutorial

Laravel 遷移是管理資料庫架構變更的好方法。它們允許您對資料庫結構進行版本控制,並隨時間輕鬆回滾或修改變更。在本指南中,我們將逐步探索在 Laravel 中建立、運行和回滾遷移的過程,並提供一個實踐範例。

第 1 步:設定 Laravel 環境

開始遷移之前,請確保已安裝 Laravel。您可以透過 Composer 執行此操作:

composer create-project --prefer-dist laravel/laravel migration-demo
登入後複製

然後導航到專案資料夾:

cd migration-demo
登入後複製

第2步:資料庫配置

要設定資料庫,請在 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
登入後複製

配置資料庫後,如果本機環境尚不存在,您可以建立一個新資料庫。

第 3 步:建立遷移

您可以使用 artisan 指令建立新的遷移。例如,要建立使用者表遷移:

php artisan make:migration create_users_table
登入後複製

該指令在database/migrations目錄中產生一個遷移檔。檔案名稱將包含時間戳,類似於 2024_09_13_123456_create_users_table.php。

第 4 步:定義遷移架構

開啟產生的遷移檔案。你會發現兩個方法: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() 方法定義了在回滾時如何刪除表格(即刪除表格)。

第 5 步:運行遷移

要執行遷移並在資料庫中建立使用者表,請使用下列命令:

php artisan migrate
登入後複製
登入後複製

此指令將執行所有尚未執行的遷移。您應該看到以下輸出:

Migrating: 2024_09_13_123456_create_users_table
Migrated:  2024_09_13_123456_create_users_table (0.45 seconds)
登入後複製

您可以驗證使用者表是否已在資料庫中建立。

第 6 步:回滾遷移

要回滾最近的遷移,請使用以下指令:

php artisan migrate:rollback
登入後複製

這將刪除使用者表或最近遷移批次中定義的任何表。

要回滾多個個遷移步驟,請使用:

php artisan migrate:rollback --step=2
登入後複製

這將回滾最後兩批遷移。

第 7 步:修改現有表

如果要修改現有資料表(例如新增列),請建立新的遷移:

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
登入後複製
登入後複製

第 8 步:播種資料庫

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 中的播種器來為資料庫播種。

第 9 步:執行所有遷移和播種器

重置資料庫並執行所有遷移和播種程式:

php artisan migrate:fresh --seed
登入後複製

此指令將刪除所有表,重新執行所有遷移,並為資料庫設定種子。

第 10 步:遷移最佳實踐

  • 版本控制:始終將遷移與程式碼一起提交到版本控制 (Git)。
  • 小型遷移:將大型遷移分解為較小的遷移,以便更輕鬆地回溯和調試。
  • 避免更改現有遷移:如果您已經在生產中運行遷移,請建立一個新遷移來修改資料庫,而不是更改現有遷移。

實踐範例摘要

  1. 建立一個新的 Laravel 專案。
  2. 設定資料庫連線的.env 檔案。
  3. 為使用者表建立遷移。
  4. 在 up() 方法中定義表格模式。
  5. 使用 php artisan migrate 運行遷移。
  6. 透過另一個遷移新增電話列來修改使用者表。
  7. 根據需要回滾或重新運行遷移。
  8. 使用範例資料為資料庫新增種子。
  9. 使用遷移有效管理資料庫狀態。

透過執行以下步驟,您可以使用遷移輕鬆管理 Laravel 中的資料庫架構變更。 Laravel 遷移是保持資料庫結構版本控制並在不同環境(如開發、登台和生產)之間同步的重要組成部分。

以上是使用遷移在 Laravel 中進行資料庫架構管理:深入教程的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板