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

Laravel Middlewares

Laravel Middlewares

Middleware cung cấp một cơ chế thuận tiện để lọc các yêu cầu HTTP gửi đến ứng dụng bạn. Nó là một lớp trung gian nằm giữa request và controller. Bạn có thể thêm các xử lý logic trước khi gửi đến contr...

Integrating AI Assistant with CKEditor 5 in Laravel using Vite

Integrating AI Assistant with CKEditor 5 in Laravel using Vite

OpenAI OpenAI là một công ty nghiên cứu và triển khai trí tuệ nhân tạo, nổi tiếng với việc phát triển các mô hình AI tiên tiến. Mục tiêu của OpenAI là đảm bảo rằng trí tuệ nhân tạo tổng quát (AGI...

Integrating TinyMCE in Laravel 10 using Vite

Integrating TinyMCE in Laravel 10 using Vite

TinyMCE TinyMCE là một trình soạn thảo WYSIWYG được xây dựng trên nền tảng Javascript, được phát triển dưới dạng mã nguồn mở theo giấy phép MIT bởi Tiny Technologies Inc. TinyMCE cho phép ngư...

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 Has Many Through Eloquent Relationship

Laravel Has Many Through Eloquent Relationship

Has Many Through Relationship hơi phức tạp để hiểu một cách đơn giản, nó sẽ cung cấp cho chúng ta một con đường tắt để có thể truy cập dữ liệu của một quan hệ xa xôi thông qua một mối quan hệ trung gi...

Laravel TinyMCE 6 Image Upload

Laravel TinyMCE 6 Image Upload

TinyMCE TinyMCE là một trình soạn thảo  WYSIWYG  được xây dựng trên nền tảng Javascript, được phát triển dưới dạng mã nguồn mở theo giấy phép  MIT  bởi Tiny Technologies Inc. TinyMCE cho phép ngư...

Laravel Queue Workers With Systemd

Laravel Queue Workers With Systemd

Systemd chủ yếu được sử dụng để quản lý các service trên môi trường Linux, nhưng nó cũng cho phép chúng ta quản lý các service với quyền không phải là root. Điều này, làm cho systemd trở thành một giả...

Laravel Facades

Laravel Facades

Facade là gì? Chúng ta có thể hiểu Facade là mặt tiền và mặt trước của một tòa nhà hay bất cứ thứ gì. Tầm quan trọng của Facade là chúng có thể dễ nhận thấy và nổi bật hơn, tương tự như vậy, thì...

Laravel CKEditor 5 Image Upload

Laravel CKEditor 5 Image Upload

CKEditor 5CKEditor 5 là một trình soạn thảo văn bản phong phú JavaScript với nhiều tính năng và khả năng tùy chỉnh. CKEditor 5 có kiến trúc MVC hiện đại, mô hình dữ liệu tùy chỉnh và DOM ảo, mang...

ManhDanBlogs