Latest Post

Tăng thứ hạng và truy cập tự nhiên với 10 phương pháp SEO hay nhất Kiếm Tiền Online (mmo): Khái Niệm và Các Hình Thức Phổ Biến

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.

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *