Trong Laravel, có hai công cụ quan trọng để thao tác với cơ sở dữ liệu: Laravel Migration và Laravel Seed. Trong bài viết này, chúng ta sẽ tập trung giới thiệu và hướng dẫn sử dụng Laravel Migration.
Laravel Migration là gì?
Laravel Migration là một tính năng mạnh mẽ trong Laravel dùng để quản lý phiên bản của cơ sở dữ liệu. Nó cho phép bạn mô tả và chia sẻ thiết kế của cơ sở dữ liệu của bạn. Bạn có thể tạo bảng mới, thêm hoặc xóa cột, và thực hiện các thay đổi khác trong cơ sở dữ liệu một cách dễ dàng. Khi bạn thực hiện các thay đổi trong cơ sở dữ liệu và muốn đồng bộ hóa chúng trên các môi trường khác nhau, bạn chỉ cần kéo mã nguồn mới về và chạy lệnh migrate. Lúc đó, cơ sở dữ liệu của bạn sẽ tự động cập nhật để phản ánh thiết kế mới trên tất cả các môi trường.
Nếu có lỗi xảy ra trong quá trình chạy các tác vụ migrate, Laravel Migration cũng cung cấp khả năng rollback, giúp bạn phục hồi cơ sở dữ liệu về trạng thái trước khi thực hiện các thay đổi. Điều này giúp bảo đảm tính nhất quán và đáng tin cậy trong quản lý cơ sở dữ liệu của ứng dụng Laravel.
Hướng dẫn sử dụng Laravel Migration
1. Tạo một thiết kế bảng CSDL
Để tạo một file thiết kế bảng CSDL bạn sử dụng command
php artisan make:migration create_pages_table
Kết quả nó sẽ tạo ra 1 file migration ở thư mục databases/migrations/
Nội dung file mặc định sẽ là:
<?php use IlluminateDatabaseMigrationsMigration; use IlluminateDatabaseSchemaBlueprint; use IlluminateSupportFacadesSchema; return new class extends Migration { /** * Run the migrations. */ public function up(): void { Schema::create('pages', function (Blueprint $table) { $table->id(); $table->timestamps(); }); } /** * Reverse the migrations. */ public function down(): void { Schema::dropIfExists('pages'); } };
Bây giờ các bạn hãy sửa lại nó như thiết kế database mà các bạn mong muốn. VD:
<?php use IlluminateDatabaseMigrationsMigration; use IlluminateDatabaseSchemaBlueprint; use IlluminateSupportFacadesSchema; return new class extends Migration { /** * Run the migrations. */ public function up(): void { Schema::create('pages', function (Blueprint $table) { $table->unsignedBigInteger('page_id', true)->unique(); $table->string('page_title', 255); $table->string('page_name', 180)->unique(); $table->unsignedInteger('page_views')->default(0); $table->string('thumbnail', 1000); $table->longText('page_content'); $table->timestamp('created_at')->default(DB::raw('CURRENT_TIMESTAMP')); $table->timestamp('updated_at')->nullable(); $table->softDeletes('deleted_at', 0); }); } /** * Reverse the migrations. */ public function down(): void { Schema::dropIfExists('pages'); } };
2. Chạy migrate Database sử dụng Laravel Migration
Sau khi thiết kế CSDL dữ liệu bằng mã code php như trên, tiếp theo bạn cần là kết nối CSDL trong file .env của Laravel
DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=webtools DB_USERNAME=root DB_PASSWORD=
Sau đó chạy lệnh migrate database
php artisan migrate
Nếu quá trình migrate thành công nó sẽ tạo trong CSDL của chúng ta 1 bảng như thiết kế ban đầu.
Bạn có thể kiếm tra trạng thái các bảng đã migrate bằng lệnh sau:
php artisan migrate:status
3. Rollback lại Laravel Migrate
Bạn có thể rollback lại trạng thái trước khi migrate bằng lệnh migrate rollback
php artisan migrate:rollback
Trường hợp bạn muốn rollback lại toàn bộ database thì
php artisan migrate:reset
4. Xóa toàn bộ Laravel Migration
Chú ý lệnh dưới đây sẽ xóa toàn bộ bảng được tạo ra bằng Laravel Migrate và các file migration, nên hãy chắc chắn trước là bạn muốn thực hiện điều này.
php artisan migrate:fresh php artisan migrate:fresh --seed
Với Laravel Migration, bạn có thể làm chủ hoàn toàn thiết kế, thay đổi database bằng các dòng code PHP.