Migration trong Laravel
Giới thiệu chung.
Migration giống như một hệ thống quản lý phiên bản giống như Git nhưng dành cho cơ sở dữ liệu của bạn. Migration cho phép bạn định nghĩa các bảng trong CSDL, định nghĩa nội dung các bảng cũng như cập nhật thay đổi các bảng đó hoàn toàn bằng PHP. Đồng thời các thao tác với databse này còn có thể sử dụng trên các loại CSDL khác nhau như MySQL, SQL Server, Postgres, … mà không cần phải chỉnh sửa lại code theo CSDL sử dụng.

Điều kiện tiên quyết để chạy migration một cách thành công:
- Phải có kết nối với database .
- migrations muốn sử dụng được thì phải nằm trong thư mục App\database\migrations
Cấu trúc migration
use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; class CreateTable extends Migration { public function up() { //đoạn lệnh khi thực hiện migrate } public function down() { //đoạn lệnh thực hiện khi Rollback. } }
Tạo Migration
-Tạo Migrations bằng lệnh thì các bạn mở cmd lên và trỏ tới thư mục chứa project của các bạn (D:\laragon\www\tenproject)
- php artisan make:migration TenMigrate : Tạo migrations thông thường.
- php artisan make:migration TenMigrate –create=TableName : Tạo migrations cho bảng(tự động sinh code tạo bảng trong 2 function up() và down() )
- php artisan make:migration TenMigrate –table=TableName : Tạo migrations chỉnh sửa bảng.
-Chú Thích: TenMigrate,TableName là các thông số các bạn có thể tùy chỉnh.

Tạo bảng với Schema
public function up() { Schema::create('SanPham', function (Blueprint $table) { $table->increments('id'); //Tự tăng, khóa chính $table->string('TenSanPham'); //Kiểu chuỗi $table->integer('Gia'); //Kiểu int $table->date('ngay');// kieu ngay $table->timestamps(); //Tự cập nhật thời gian }); }
- Phương thức table trong Schema được sử dụng để cập nhật nếu tồn tại. Như phương thức create, phương thức table chấp nhận 2 tham số: tên bảng và một Closure nhận vào thể hiện của đối tượng Blueprint được dùng để thêm column cho table.
- Một số column có sẵn Xem thêm.
Câu lệnh | Mô tả |
$table->bigIncrements(‘id’); | Cột khóa chính, số nguyên tự động tăng không âm. |
$table->bigInteger(‘votes’); | Cột kiểu dữ liệu số nguyên |
$table->boolean(‘confirmed’); | Cột kiểu dữ liệu boolean |
$table->date(‘created_at’); | Cột kiểu dữ liệu ngày |
$table->dateTime(‘created_at’); | Cột kiểu dữ liệu ngày, giờ. |
$table->dateTimeTz(‘created_at’); | Cột kiểu dữ liệu ngày giờ theo múi giờ |
$table->decimal(‘amount’, 8, 2); | Cột kiểu dữ liệu số thập phân với độ chính xác 8 và số thập phân 2 |
$table->double(‘amount’, 8, 2); | Tương tự decimal nhưng là double |
$table->enum(‘level’, [‘easy’, ‘hard’]); | Cột kiểu enum |
$table->float(‘amount’, 8, 2); | Tương tự decimal nhưng là float |
$table->increments(‘id’); | Cột khóa chính, số nguyên tự động tăng không âm. |
$table->integer(‘votes’); | Cột kiểu dữ liệu số nguyên |
$table->json(‘options’); | Cột kiểu dữ liệu json |
$table->jsonb(‘options’); | Cột kiểu dữ liệu jsonb |
$table->lineString(‘positions’); | Cột kiểu dữ liệu line string |
$table->longText(‘description’); | Cột kiểu dữ liệu long text |
$table->macAddress(‘device’); | Cột kiểu dữ liệu địa chỉ MAC |
$table->mediumIncrements(‘id’); | Cột khóa chính, số nguyên tự động tăng không âm. |
$table->mediumInteger(‘votes’); | Cột kiểu dữ liệu số nguyên |
$table->mediumText(‘description’); | Cột kiểu dữ liệu text |
$table->string(‘name’, 100); | Cột kiểu dữ liệu chuỗi. |
Thay đổi columns
- Điều kiện phải cài gói: composer require doctrine/dbal.
- Thay đổi thuộc tính của column, sử dụng phương thức change để tiến hành thay đổi.
Schema::table('users', function (Blueprint $table) { $table->string('name', 50)->change(); });
Thay đổi tên column
Schema::table('users', function (Blueprint $table) { $table->renameColumn('from', 'to'); });
Xóa columns
- Sử dụng method dropColumn để xóa columns.
- Xóa một columns.
Schema::table('users', function (Blueprint $table) { $table->dropColumn('votes'); });
Xóa nhiều columns
Schema::table('users', function (Blueprint $table) { $table->dropColumn(['votes', 'avatar', 'location']); });