搜尋
首頁後端開發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
絕對會話超時有什麼區別?絕對會話超時有什麼區別?May 03, 2025 am 12:21 AM

絕對會話超時從會話創建時開始計時,閒置會話超時則從用戶無操作時開始計時。絕對會話超時適用於需要嚴格控制會話生命週期的場景,如金融應用;閒置會話超時適合希望用戶長時間保持會話活躍的應用,如社交媒體。

如果會話在服務器上不起作用,您將採取什麼步驟?如果會話在服務器上不起作用,您將採取什麼步驟?May 03, 2025 am 12:19 AM

服務器會話失效可以通過以下步驟解決:1.檢查服務器配置,確保會話設置正確。 2.驗證客戶端cookies,確認瀏覽器支持並正確發送。 3.檢查會話存儲服務,如Redis,確保其正常運行。 4.審查應用代碼,確保會話邏輯正確。通過這些步驟,可以有效診斷和修復會話問題,提升用戶體驗。

session_start()函數的意義是什麼?session_start()函數的意義是什麼?May 03, 2025 am 12:18 AM

session_start()iscucialinphpformanagingusersessions.1)ItInitiateSanewsessionifnoneexists,2)resumesanexistingsessions,and3)setsasesessionCookieforContinuityActinuityAccontinuityAcconActInityAcconActInityAcconAccRequests,EnablingApplicationsApplicationsLikeUseAppericationLikeUseAthenticationalticationaltication and PersersonalizedContentent。

為會話cookie設置httponly標誌的重要性是什麼?為會話cookie設置httponly標誌的重要性是什麼?May 03, 2025 am 12:10 AM

設置httponly標誌對會話cookie至關重要,因為它能有效防止XSS攻擊,保護用戶會話信息。具體來說,1)httponly標誌阻止JavaScript訪問cookie,2)在PHP和Flask中可以通過setcookie和make_response設置該標誌,3)儘管不能防範所有攻擊,但應作為整體安全策略的一部分。

PHP會議在網絡開發中解決了什麼問題?PHP會議在網絡開發中解決了什麼問題?May 03, 2025 am 12:02 AM

phpsessions solvathepromblymaintainingStateAcrossMultipleHttpRequestsbyStoringDataTaNthEserVerAndAssociatingItwithaIniquesestionId.1)他們儲存了AtoredAtaserver side,通常是Infilesordatabases,InseasessessionIdStoreDistordStoredStoredStoredStoredStoredStoredStoreDoreToreTeReTrestaa.2)

可以在PHP會話中存儲哪些數據?可以在PHP會話中存儲哪些數據?May 02, 2025 am 12:17 AM

phpsessionscanStorestrings,數字,數組和原始物。

您如何開始PHP會話?您如何開始PHP會話?May 02, 2025 am 12:16 AM

tostartaphpsession,usesesses_start()attheScript'Sbeginning.1)placeitbeforeanyOutputtosetThesessionCookie.2)useSessionsforuserDatalikeloginstatusorshoppingcarts.3)regenerateSessiveIdStopreventFentfixationAttacks.s.4)考慮使用AttActAcks.s.s.4)

什麼是會話再生,如何提高安全性?什麼是會話再生,如何提高安全性?May 02, 2025 am 12:15 AM

會話再生是指在用戶進行敏感操作時生成新會話ID並使舊ID失效,以防會話固定攻擊。實現步驟包括:1.檢測敏感操作,2.生成新會話ID,3.銷毀舊會話ID,4.更新用戶端會話信息。

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脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),