搜尋
首頁後端開發php教程使用遷移在 Laravel 中進行資料庫架構管理:深入教程

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中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
PHP記錄:PHP日誌分析的最佳實踐PHP記錄:PHP日誌分析的最佳實踐Mar 10, 2025 pm 02:32 PM

PHP日誌記錄對於監視和調試Web應用程序以及捕獲關鍵事件,錯誤和運行時行為至關重要。它為系統性能提供了寶貴的見解,有助於識別問題並支持更快的故障排除

在Laravel中使用Flash會話數據在Laravel中使用Flash會話數據Mar 12, 2025 pm 05:08 PM

Laravel使用其直觀的閃存方法簡化了處理臨時會話數據。這非常適合在您的應用程序中顯示簡短的消息,警報或通知。 默認情況下,數據僅針對後續請求: $請求 -

php中的捲曲:如何在REST API中使用PHP捲曲擴展php中的捲曲:如何在REST API中使用PHP捲曲擴展Mar 14, 2025 am 11:42 AM

PHP客戶端URL(curl)擴展是開發人員的強大工具,可以與遠程服務器和REST API無縫交互。通過利用Libcurl(備受尊敬的多協議文件傳輸庫),PHP curl促進了有效的執行

簡化的HTTP響應在Laravel測試中模擬了簡化的HTTP響應在Laravel測試中模擬了Mar 12, 2025 pm 05:09 PM

Laravel 提供简洁的 HTTP 响应模拟语法,简化了 HTTP 交互测试。这种方法显著减少了代码冗余,同时使您的测试模拟更直观。 基本实现提供了多种响应类型快捷方式: use Illuminate\Support\Facades\Http; Http::fake([ 'google.com' => 'Hello World', 'github.com' => ['foo' => 'bar'], 'forge.laravel.com' =>

在Codecanyon上的12個最佳PHP聊天腳本在Codecanyon上的12個最佳PHP聊天腳本Mar 13, 2025 pm 12:08 PM

您是否想為客戶最緊迫的問題提供實時的即時解決方案? 實時聊天使您可以與客戶進行實時對話,並立即解決他們的問題。它允許您為您的自定義提供更快的服務

解釋PHP中晚期靜態結合的概念。解釋PHP中晚期靜態結合的概念。Mar 21, 2025 pm 01:33 PM

文章討論了PHP 5.3中介紹的PHP中的晚期靜態結合(LSB),允許靜態方法的運行時間分辨率調用以更靈活的繼承。 LSB的實用應用和潛在的觸摸

自定義/擴展框架:如何添加自定義功能。自定義/擴展框架:如何添加自定義功能。Mar 28, 2025 pm 05:12 PM

本文討論了將自定義功能添加到框架上,專注於理解體系結構,識別擴展點以及集成和調試的最佳實踐。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能