Migration cho phép các nhà phát triển (Developer) nhanh chóng tạo ra cở sở dữ liệu của ứng dụng mà không cần vào màn hình quản lý cơ sở dữ liệu hay chạy bất kì một câu lệnh SQL nào.

Trước hết, nếu bạn muốn xây dựng dự án, Bạn cần thiết kế cơ sở dữ liệu. Vậy bạn cần làm gì, bạn có thể thiết kế trực tiếp ở màn hình quản lý cơ sở dữ liệu và chẳng may bạn bỏ lỡ field/column hoặc datatype và cần phải sửa nó trực tiếp vào cơ sở dữ liệu. Đây là một thực tế thật sự không tốt chút nào trong Laravel.

Trong một tình huống khác, nếu một người trong dự án cần cơ sở dữ liệu của bạn, thì bạn cần phải gửi file SQL, nghe đến đây thôi mà mình đã cảm thấy đau đớn rồi, bạn nghĩ sao về trường hợp này.

Bây giờ bạn hãy nghỉ về một tương lai tương sáng hơn, đó chính là bạn chỉ cần pull source code về máy bạn, và chạy command line thì cơ sở dữ liệu tự động được cài đặt. Nếu làm được như vậy thì có phải nó rất hữu ích hay sao.

Laravel migration sẽ giúp bạn làm được điều đó. Bây giờ, bạn không cần phải lo lắng về file SQL hoặc bạn có thể bỏ sót field/column hoặc datatype nữa và bạn cũng không cần làm việc trước tiếp với cơ sở dữ liệu nữa. Bạn chỉ cần sửa đổi mã và chạy lệnh sau:

php artisan migrate:refresh

Vì vậy, tôi hy vọng bạn đã nhận thấy lợi của Laravel migation.

Bây giờ, chúng ta hãy thử làm ví dụ để trải nghiệm nào.

Trước tiên, bạn hãy thử tạo migrate cho bảng users

php artisan make:migration create_users_table

Khi đó, bạn hãy tạo cấu trúc migrate như bên dưới

<?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->bigIncrements('id');
            $table->string('name');
            $table->string('email')->unique();
            $table->timestamp('email_verified_at')->nullable();
            $table->string('password');
            $table->rememberToken();
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('users');
    }
}

Nhưng sau khi triển khai dự án, bạn cần thêm cột phone_number vào bảng users, nhiều bạn có suy nghĩ sửa trực tiếp file migrate users, nhưng do dự án đã triển khai rồi, nên mình khuyên các bạn không nên làm như vậy, mà hay tạo ra một file migrate khác có nhiệm vụ thêm cột phone_number vào bảng users.

Bây giờ, bạn hãy sử dụng lệnh sau:

php artisan make:migration add_phone_number_to_users_table

Sau đó, bạn hãy sửa đổi migrate mới tạo với cấu trúc như sau

<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class AddPhoneNumberToUsersTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::table('users', function (Blueprint $table) {
            $table->string('phone_number')->unique()->after('email');
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::table('users', function (Blueprint $table) {
            $table->dropColumn('phone_number');
        });
    }

Khi đó, bạn chỉ cần sử dụng migrate rollback, nó sẽ hoạt động bình thường

php artisan migrate:rollback

Bây giờ bạn chỉ cần chạy lệnh

php artisan migrate

Tôi hy vọng bạn thích hướng dẫn này. Nếu bạn có bất kỳ câu hỏi nào hãy liên hệ với chúng tôi qua trang contact. Cảm ơn bạn.

CÓ THỂ BẠN QUAN TÂM

Pipeline Design Pattern in Laravel

Pipeline Design Pattern in Laravel

Pipeline Design Pattern là nơi mà các dữ liệu được chuyển qua một chuỗi các nhiệm vụ hoặc giai đoạn. Pipeline hoạt động giống như một chuỗi dây chuyền lắp ráp, nơi dữ liệu được xử lý và sau đó, sẽ...

How to insert into a database at lightning speed?

How to insert into a database at lightning speed?

Trong quá trình thực hiện dự án cho công ty, một trong những yêu cầu đặt ra là import dữ liệu từ file CSV (chứa dữ liệu từ hệ thống cũ) vào cơ sở dữ liệu MySQL của hệ thống mới. Do sự thay đổi cấu...

Laravel Custom Request

Laravel Custom Request

Nếu bạn có một form để người dùng nhập dữ liệu và bạn muốn kiểm tra dữ liệu đầu vào trước khi lưu xuống database chẳng hạn thì bạn có 2 cách sau đây: Cách 1: Bạn thêm validate trực tiếp vào hàm sto...

Integrating Google Gemini AI in Laravel

Integrating Google Gemini AI in Laravel

Google Gemini Gemini là một mô hình trí tuệ nhân tạo mới mạnh mẽ từ Google không chỉ có khả năng hiểu văn bản mà còn có thể hiểu cả hình ảnh, video và âm thanh. Gemini là một mô hình đa phương ti...

Laravel Socialite Login With Gitlab

Laravel Socialite Login With Gitlab

GitLab GitLab là kho lưu trữ Git dựa trên web cung cấp các kho lưu trữ mở và riêng tư miễn phí, các khả năng theo dõi vấn đề và wiki. Đây là một nền tảng DevOps hoàn chỉnh cho phép các chuyên gia...

Laravel One to One Eloquent Relationship

Laravel One to One Eloquent Relationship

Mối quan hệ một-một là một mối quan hệ rất cơ bản. Trong hướng dẫn này, tôi sẽ hướng dẫn bạn cách tạo dữ liệu và truy xuất dữ liệu bằng Eloquent Model. Trong hướng dẫn này, tôi sẽ tạo hai bảng là u...

Efficient Laravel PDF Export for Large Datasets

Efficient Laravel PDF Export for Large Datasets

Xuất file PDF là một tính năng quan trọng của nhiều ứng dụng web, đặc biệt là các trang thương mại điện tử, giúp người dùng tạo và lưu trữ các bản báo cáo, hóa đơn, v.v.  Tuy nhiên, khi phải xử lý...

Laravel UI Custom Email Verification Template

Laravel UI Custom Email Verification Template

Nếu bạn đang dùng thư viện laravel/ui để làm các chức năng liên quan đến authentication, và trong dự án của bạn, bạn cần thay đổi template email verification thay vì sử dụng template email verificatio...

Laravel Scout Full Text Search With Meilisearch

Laravel Scout Full Text Search With Meilisearch

Laravel Scout cung cấp một giải pháp đơn giản, dựa trên trình điều khiển để thêm tìm kiếm Full Text vào các mô hình Eloquent của bạn. Khi sử dụng Eloquent, Scout sẽ tự động giữ chỉ mục tìm kiếm của bạ...

ManhDanBlogs