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

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

Laravel Export & Import CSV

Laravel Export & Import CSV

Trong bài viết này, tôi sẽ hướng dẫn các tạo cách Export hoặc Import CSV trong Laravel. Nhưng thay vì chỉ viết hàm đơn thuần trong PHP thì tôi sẽ hướng dẫn các tạo ra một Service trong Laravel bằng cá...

Laravel Authentication With Laravel UI

Laravel Authentication With Laravel UI

Laravel UI Laravel UI cung cấp một cách nhanh chóng để mở rộng các route và view cần thiết cho chức năng Authentication và bao gồm các cài đặt liên quan cho Bootstrap, React hoặc Vue. Mặc dù nó v...

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

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

Implementing Private User Folders with elFinder in Laravel

Implementing Private User Folders with elFinder in Laravel

elFinder elFinder là một trình quản lý tập tin mã nguồn mở dành cho web, được viết bằng JavaScript sử dụng jQuery UI. elFinder được phát triển dựa trên cảm hứng từ sự tiện lợi và đơn giản của chư...

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

ManhDanBlogs