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

Csv import with Validation for Laravel

Csv import with Validation for Laravel

Trong một bài viết lúc trước, mình đã chia sẻ đến các bạn cách xây dựng một service import và export CSV sử dụng Facades, nếu có bạn nào không biết hoặc đã quên các bạn có thể tham khảo lại bài viết t...

Amazon S3 Pre-Signed URL with DropzoneJs in Laravel

Amazon S3 Pre-Signed URL with DropzoneJs in Laravel

Chức năng upload file hay hình ảnh là một chức năng rất phổ biến, hầu hết các dự án đều có chức năng này. Đa số các nhà phát triển khi thực hiện chức năng upload file, thường sẽ sử dụng cách làm nh...

Generate PDF with Header and Footer on every page in Laravel

Generate PDF with Header and Footer on every page in Laravel

Hôm nay, trong bài viết này mình sẽ chia sẻ với các bạn cách dompdf mà header và footer sẽ được hiển thị ở tất cả các trang. Đây cũng là một vấn đề khá phổ biến, khi chúng ta phát triển các tính năng...

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ẽ...

Export CSV from AWS RDS - Import into MySQL with Laravel

Export CSV from AWS RDS - Import into MySQL with Laravel

Transfer Database Trong quá trình phát triển và bảo trì dự án, nhiệm vụ di chuyển cơ sở dữ liệu từ hệ thống này sang hệ thống khác là một nhiệm vụ khá là phổ biến. Chúng ta thường sẽ sử dụng câu...

Cloudflare's Turnstile CAPTCHA in Laravel

Cloudflare's Turnstile CAPTCHA in Laravel

Ngày 28/09/2022, Cloudflare đã thông báo về phiên bản beta mở của Turnstile, một giải pháp thay thế vô hình cho CAPTCHA. Bất kỳ ai, ở bất kỳ đâu trên Internet muốn thay thế CAPTCHA trên trang web c...

How to Install Laravel on CentOS 6/7

How to Install Laravel on CentOS 6/7

Laravel là một PHP Framework mã nguồn mở miễn phí, được phát triển bởi Taylor Otwell với phiên bản đầu tiên được ra mắt vào 6/2011. Laravel ra đời nhằm mục đích phát triển ứng dụng web dựa trên mô hìn...

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 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...

ManhDanBlogs