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)。
- 小型遷移:將大型遷移分解為較小的遷移,以便更輕鬆地回溯和調試。
- 避免更改現有遷移:如果您已經在生產中運行遷移,請建立一個新遷移來修改資料庫,而不是更改現有遷移。
實踐範例摘要
- 建立一個新的 Laravel 專案。
- 設定資料庫連線的.env 檔案。
- 為使用者表建立遷移。
- 在 up() 方法中定義表格模式。
- 使用 php artisan migrate 運行遷移。
- 透過另一個遷移新增電話列來修改使用者表。
- 根據需要回滾或重新運行遷移。
- 使用範例資料為資料庫新增種子。
- 使用遷移有效管理資料庫狀態。
透過執行以下步驟,您可以使用遷移輕鬆管理 Laravel 中的資料庫架構變更。 Laravel 遷移是保持資料庫結構版本控制並在不同環境(如開發、登台和生產)之間同步的重要組成部分。
以上是使用遷移在 Laravel 中進行資料庫架構管理:深入教程的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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

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

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

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

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

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

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


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

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

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3 Linux新版
SublimeText3 Linux最新版

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

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

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