NTM Solutions

Bài đăng nổi bật

🚀 Laravel 12 (2026) — Từ PHP Core đến Full Stack📘

Nếu cập nhật theo Laravel 12 LTS (2026) thì mình sẽ chia thành các phần như sau để người học đi từ PHP Core → Laravel → Triển khai dự án th...

Chủ Nhật, 12 tháng 7, 2026

🚀 Laravel 12 (2026) — Bài 07 — Migration trong Laravel 12: Tạo bảng và quản lý cơ sở dữ liệu bằng mã nguồn

Ở bài trước, chúng ta đã kết nối thành công Laravel với MySQL và chạy các Migration mặc định của hệ thống. 

Trong bài học này, chúng ta sẽ tìm hiểu sâu hơn về Migration – một trong những tính năng quan trọng nhất của Laravel.

Thay vì tạo bảng trực tiếp bằng phpMyAdmin, Laravel cho phép chúng ta quản lý toàn bộ cấu trúc cơ sở dữ liệu bằng mã nguồn. 

Điều này giúp dự án dễ bảo trì, dễ chia sẻ và đồng bộ giữa các thành viên trong nhóm.


Migration là gì?

Migration là các file PHP dùng để tạo hoặc thay đổi cấu trúc cơ sở dữ liệu.

Có thể xem Migration như "lịch sử thay đổi" của Database. Mỗi khi cần tạo bảng mới, thêm cột hoặc xóa cột, chúng ta chỉ cần tạo một Migration mới thay vì chỉnh sửa trực tiếp trên cơ sở dữ liệu.

Nhờ vậy, mọi thay đổi đều được lưu lại và có thể hoàn tác khi cần.


Tạo Migration

Để tạo một Migration mới, sử dụng Artisan:

php artisan make:migration create_posts_table

Sau khi chạy lệnh, Laravel sẽ tạo một file trong thư mục:

database/
└── migrations/

Tên file sẽ có dạng:

2026_07_08_101530_create_posts_table.php

Phần thời gian ở đầu giúp Laravel biết thứ tự thực thi các Migration.


Cấu trúc của Migration

Một Migration gồm hai phương thức chính:

public function up(): void
{
    //
}

public function down(): void
{
    //
}
  • up(): Thực hiện thay đổi (tạo bảng, thêm cột...).

  • down(): Hoàn tác thay đổi (xóa bảng, xóa cột...).

Laravel sẽ gọi up() khi chạy Migration và gọi down() khi Rollback.


Tạo bảng đầu tiên

Ví dụ tạo bảng posts:

Schema::create('posts', function (Blueprint $table) {
    $table->id();
    $table->string('title');
    $table->text('content');
    $table->timestamps();
});

Ý nghĩa:

  • id() tạo khóa chính tự tăng.

  • string() tạo cột chuỗi.

  • text() dùng cho nội dung dài.

  • timestamps() tạo hai cột:

    • created_at

    • updated_at

Sau khi chạy Migration, Laravel sẽ tự động tạo bảng posts.


Các kiểu dữ liệu phổ biến

Laravel hỗ trợ rất nhiều kiểu dữ liệu.

Một số kiểu thường gặp:

$table->string('name');

$table->text('content');

$table->integer('price');

$table->boolean('status');

$table->date('birthday');

$table->timestamp('published_at');

$table->float('score');

$table->decimal('amount',10,2);

Việc lựa chọn đúng kiểu dữ liệu sẽ giúp cơ sở dữ liệu hoạt động hiệu quả hơn.


foreignId()

Trong các dự án thực tế, các bảng thường liên kết với nhau.

Ví dụ:

  • Một User có nhiều Post.

  • Một Category có nhiều Post.

Laravel hỗ trợ tạo khóa ngoại rất đơn giản:

$table->foreignId('user_id')
      ->constrained()
      ->cascadeOnDelete();

Lệnh trên tương đương với:

  • tạo cột user_id

  • tạo Foreign Key

  • tham chiếu đến bảng users

  • tự động xóa dữ liệu liên quan khi User bị xóa.

Nếu tham chiếu đến bảng khác:

$table->foreignId('category_id')
      ->constrained('categories');

Đây là cách được khuyến nghị trong các dự án Laravel hiện đại.


Chạy Migration

Sau khi hoàn thành Migration:

php artisan migrate

Laravel sẽ đọc file Migration mới và thực hiện các thay đổi lên Database.

Những Migration đã chạy sẽ không bị chạy lại.


Rollback Migration

Nếu tạo sai bảng hoặc cần quay lại trạng thái trước đó:

php artisan migrate:rollback

Laravel sẽ gọi phương thức:

down()

để hoàn tác Migration gần nhất.


Làm mới toàn bộ Database

Trong quá trình học tập, đôi khi chúng ta muốn xóa toàn bộ bảng và tạo lại từ đầu.

php artisan migrate:fresh

Lệnh này sẽ:

  • Xóa tất cả bảng.

  • Chạy lại toàn bộ Migration.

Nếu muốn tạo dữ liệu mẫu luôn:

php artisan migrate:fresh --seed

Lệnh này rất hữu ích trong quá trình phát triển.


Một số quy tắc đặt tên

Laravel có quy ước đặt tên Migration:

create_posts_table

create_categories_table

create_users_table

Khi thêm cột:

add_status_to_posts_table

Đặt tên đúng quy ước giúp người khác dễ hiểu mục đích của Migration.


Những lưu ý khi sử dụng Migration

  • Không chỉnh sửa trực tiếp Database nếu dự án đang quản lý bằng Migration.

  • Mỗi thay đổi nên tạo một Migration mới thay vì sửa Migration cũ đã được chia sẻ.

  • Thường xuyên sao lưu dữ liệu trước khi chạy các lệnh như migrate:fresh.

  • Kiểm tra kỹ khóa ngoại để tránh lỗi khi tạo bảng.


Tổng kết

Trong bài học này, chúng ta đã tìm hiểu:

  • Migration là gì.

  • Cách tạo Migration bằng Artisan.

  • Cấu trúc của một file Migration.

  • Các kiểu dữ liệu thường dùng.

  • Tạo khóa ngoại với foreignId().

  • Chạy Migration.

  • Rollback Migration.

  • Làm mới toàn bộ Database.

Ở bài tiếp theo, chúng ta sẽ học Seeder, sử dụng Faker để tạo dữ liệu mẫu và tự động thêm dữ liệu vào cơ sở dữ liệu, giúp việc phát triển và kiểm thử ứng dụng trở nên nhanh chóng hơn.

x0

quay về MỤC LỤC

Không có nhận xét nào:

Đăng nhận xét

Facebook Youtube RSS