Trong Laravel, migrations cung cấp một cách tiện lợi để tạo và quản lý các schema của cơ sở dữ liệu. Migrations tương tự như việc quản lý phiên bản cho cơ sở dữ liệu, cho phép bạn thay đổi cấu trúc cơ sở dữ liệu theo thời gian và theo dõi các thay đổi. Dưới đây là một hướng dẫn chi tiết về việc sử dụng migrations trong Laravel:
Tạo Migration
Để tạo một migration mới, bạn có thể sử dụng lệnh Artisan make:migration
. Ví dụ, để tạo migration cho việc tạo bảng "users", chạy lệnh sau:
php artisan make:migration create_users_table
Định nghĩa Schema
Mở file migration được tạo ra trong thư mục "database/migrations". Trong phương thức up
, bạn có thể định nghĩa schema cho bảng của bạn bằng cách sử dụng Laravel schema builder. Ví dụ, để tạo bảng "users" với các cột "name" và "email", bạn có thể sử dụng phương thức create
:
Schema::create('users', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('email')->unique();
$table->timestamps();
});
Chạy Migrations
Để thực thi các migrations và tạo bảng tương ứng trong cơ sở dữ liệu, sử dụng lệnh Artisan migrate
:
php artisan migrate
Rollbacks
Nếu bạn cần hoàn tác một migration, bạn có thể sử dụng lệnh migrate:rollback
. Điều này sẽ hoàn ngược lại batch migration cuối cùng:
php artisan migrate:rollback
Quản lý Trạng thái Migration
Laravel theo dõi các migrations đã được thực thi bằng cách sử dụng một bảng migrations trong cơ sở dữ liệu. Bạn có thể sử dụng lệnh migrate:status
để xem trạng thái của mỗi migration:
php artisan migrate:status
Sửa đổi Bảng
Nếu bạn cần sửa đổi một bảng hiện có, bạn có thể tạo một migration mới bằng cách sử dụng lệnh make:migration
và sử dụng các phương thức của schema builder như addColumn
, renameColumn
, hoặc dropColumn
để thực hiện những thay đổi cần thiết.
Việc sử dụng migrations trong Laravel cung cấp một cách tổ chức và hiệu quả để tạo và quản lý schema của cơ sở dữ liệu. Bằng cách sử dụng tính năng giống như quản lý phiên bản, bạn có thể dễ dàng thay đổi cấu trúc cơ sở dữ liệu và theo dõi các thay đổi đó theo thời gian.