Database: Migrations
16481

# Database Migrations

Migrations là một tính năng mạnh mẽ của Laravel giúp bạn quản lý cấu trúc cơ sở dữ liệu của ứng dụng một cách dễ dàng. Chúng cho phép bạn định nghĩa và thay đổi bảng trong cơ sở dữ liệu bằng mã PHP thay vì phải sử dụng SQL thuần.

Tạo Migration

Bạn có thể tạo một migration mới bằng cách sử dụng Artisan command make:migration:

php artisan make:migration create_users_table

Lệnh này sẽ tạo một file migration trong thư mục database/migrations. File migration có tên dựa trên timestamp hiện tại và mô tả mục đích của migration.

Cấu Trúc Migration

Một file migration điển hình gồm hai phương thức: updown.

  • up: Phương thức này dùng để định nghĩa các thay đổi bạn muốn thực hiện lên cơ sở dữ liệu (tạo bảng, thêm cột, thay đổi cột, ...).
  • down: Phương thức này dùng để đảo ngược các thay đổi đã thực hiện trong phương thức up.
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->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');
    }
}

Chạy Migration

Sau khi tạo migration, bạn có thể chạy nó bằng lệnh sau:

php artisan migrate

Lệnh này sẽ thực hiện tất cả các file migration chưa được chạy trước đó.

Rollback Migration

Nếu bạn muốn quay lại migration cuối cùng đã chạy, bạn có thể sử dụng lệnh:

php artisan migrate:rollback

Để rollback nhiều migration, bạn có thể thêm tùy chọn --step:

php artisan migrate:rollback --step=3

Reset và Refresh Migration

  • Reset: Để rollback tất cả các migration:

    php artisan migrate:reset
    
  • Refresh: Để rollback tất cả các migration và sau đó chạy lại tất cả các migration từ đầu:
    php artisan migrate:refresh
    

Thêm Cột vào Bảng

Nếu bạn muốn thêm cột vào một bảng hiện có, bạn cần tạo một migration mới:

php artisan make:migration add_profile_to_users_table --table=users

Trong file migration, bạn có thể thêm cột như sau:

public function up()
{
    Schema::table('users', function (Blueprint $table) {
        $table->string('profile')->nullable();
    });
}

public function down()
{
    Schema::table('users', function (Blueprint $table) {
        $table->dropColumn('profile');
    });
}

Xóa Bảng hoặc Cột

Để xóa bảng hoặc cột, bạn cũng tạo một migration mới và định nghĩa hành động trong phương thức updown.

php artisan make:migration drop_users_table

Trong file migration, bạn có thể xóa bảng như sau:

public function up()
{
    Schema::dropIfExists('users');
}

public function down()
{
    Schema::create('users', function (Blueprint $table) {
        $table->id();
        $table->string('name');
        $table->string('email')->unique();
        $table->timestamp('email_verified_at')->nullable();
        $table->string('password');
        $table->rememberToken();
        $table->timestamps();
    });
}

Tóm Tắt

Migrations là một phần quan trọng trong Laravel, giúp bạn quản lý cơ sở dữ liệu của ứng dụng một cách dễ dàng và hiệu quả. Chúng cho phép bạn định nghĩa các thay đổi đối với cấu trúc cơ sở dữ liệu bằng mã PHP, giúp việc theo dõi và quản lý các thay đổi trở nên dễ dàng hơn. Sử dụng migrations cũng giúp bạn duy trì tính nhất quán và khả năng sao lưu dữ liệu trong quá trình phát triển ứng dụng.

Danh mục


  1. Khác
  2. ThreeJS
  3. Ubuntu/Linux
  4. HTML/CSS
  5. Git
  6. Amazon Web Services
  7. Javascript
  8. Docker
  9. Laravel

Bài viết liên quan


Database: Pagination

Database: Pagination

01.08.2024
Author: ADMIN
Laravel cung cấp nhiều cách để phân trang dữ liệu dễ dàng. Bài viết này hướng dẫn cách sử dụng paginate(), tùy chỉnh URL, và tận dụng các phương thức Paginator để tối ưu hóa trải nghiệm người dùng.
Database: Seeding

Database: Seeding

01.08.2024
Author: ADMIN
Laravel Seeding giúp tự động tạo dữ liệu mẫu nhanh chóng. Tìm hiểu cách tạo, chạy seeder, kết hợp factory, và sử dụng trong production một cách an toàn! 🚀

Bài viết khác

Routing

Routing

01.08.2024
Author: ADMIN
Hướng dẫn chi tiết về Basic Routing trong Laravel, từ cách định nghĩa route, sử dụng middleware, route caching đến route naming giúp tối ưu hóa ứng dụng.
Blade Basics

Blade Basics

01.08.2024
Author: ADMIN
Khám phá Blade trong Laravel: từ if-else, loops, kế thừa layout đến include sub-views. Giúp code gọn gàng, dễ quản lý và bảo trì hơn!
9 Mẹo Hữu Ích Khi Sử Dụng Blade Trong Laravel

9 Mẹo Hữu Ích Khi Sử Dụng Blade Trong Laravel

01.08.2024
Author: ADMIN
Khám phá 9 mẹo Blade giúp bạn viết code Laravel sạch, tối ưu và chuyên nghiệp hơn. Từ @forelse, @auth, @guest, đến format ngày, tối ưu SEO – tất cả trong một bài viết súc tích, dễ áp dụng!
Hiển thị giá trị trong Blade

Hiển thị giá trị trong Blade

01.08.2024
Author: ADMIN
Hướng dẫn hiển thị biến trong Laravel Blade: escape HTML tự động, hiển thị dữ liệu thô, giá trị mặc định và cách truy xuất mảng, đối tượng. Giúp bạn tối ưu hiển thị dữ liệu một cách an toàn!