Migrations là một trong những tính năng quan trọng nhất trong Laravel, giúp các lập trình viên dễ dàng quản lý cấu trúc cơ sở dữ liệu mà không cần phải truy cập trực tiếp vào hệ thống quản trị cơ sở dữ liệu. Thông qua migrations, bạn có thể tạo, cập nhật hoặc xóa các bảng cùng các cột liên quan bằng PHP, cho phép bạn thống nhất quy trình làm việc trong nhóm. Cùng Hoclaravel.vn tìm hiểu chi tiết qua bài viết dưới đây.
Migrations Là Gì?
Migrations có thể được hiểu như một hệ thống quản lý phiên bản dành riêng cho cơ sở dữ liệu. Nó cho phép các lập trình viên định nghĩa và quản lý toàn bộ cấu trúc của hệ thống cơ sở dữ liệu một cách đơn giản và hiệu quả. Thay vì viết các câu lệnh SQL phức tạp, bạn có thể sử dụng PHP để thực hiện các thao tác như tạo mới, thay đổi hoặc xóa bảng.
Khi bạn viết migrations, các thao tác thực hiện có thể được áp dụng cho nhiều hệ quản trị cơ sở dữ liệu khác nhau như MySQL, PostgreSQL, hay SQLite mà không cần thay đổi mã nguồn một cách thủ công. điều kiện tiên quyết để sử dụng migrations là bạn phải kết nối được với cơ sở dữ liệu, và các file migrations cần được lưu trong thư mục App\Database\Migrations
.
Cấu Hình Kết Nối Database
Để sử dụng migrations, trước tiên bạn cần cấu hình tiền đề để Laravel kết nối với cơ sở dữ liệu. Laravel hỗ trợ hai loại file cấu hình:
- File .env: Dùng cho việc phát triển trên localhost.
- File config/database.php: Được sử dụng khi ứng dụng của bạn đi vào sản xuất.
Cấu hình trong file .env:
APP_ENV=local
APP_DEBUG=true
APP_KEY=nhu_khoang_so_khoa
DB_HOST=localhost
DB_DATABASE=ten_database
DB_USERNAME=root
DB_PASSWORD=
Trong đó:
DB_HOST
: Tên host của cơ sở dữ liệu (thường làlocalhost
với WAMP/XAMPP).DB_DATABASE
: Tên cơ sở dữ liệu mà bạn đã tạo.DB_USERNAME
vàDB_PASSWORD
: Thông tin đăng nhập vào cơ sở dữ liệu.
Cấu hình trong file config/database.php:
Bạn sẽ cấu hình các kết nối cơ sở dữ liệu như sau:
'connections' => [
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', '127.0.0.1'),
'database' => env('DB_DATABASE', 'foge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'strict' => true,
'engine' => null,
],
],
Khi bạn thiết lập cơ sở dữ liệu cho production, hãy chắc rằng bạn điền chính xác tên host, database, username và password.
Cấu Trúc Của Migrations
Một file migration cơ bản thường có cấu trúc như sau:
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateTable extends Migration
{
public function up()
{
// Thực hiện các thao tác tạo bảng
}
public function down()
{
// Thực hiện các thao tác rollback
}
}
- Function
up()
: Nơi bạn thực hiện các thao tác thêm mới bảng hay cột. - Function
down()
: Nơi bạn thực hiện các thao tác ngược lại vớiup()
(như xóa bảng).
Tạo File Migration
Có hai phương thức để tạo file migration: thủ công và thông qua command line.
- Cách Thủ Công: Tạo trực tiếp file mới trong thư mục
database/migrations
. - Cách Dùng Command Line: Sử dụng lệnh Artisan để tạo migration nhanh chóng.
php artisan make:migration ten_migration
Để tạo mới một bảng:
php artisan make:migration create_ten_bang --create=TenBang
Để chỉnh sửa một bảng đã tồn tại:
php artisan make:migration update_ten_bang --table=TenBang
Ví Dụ Thực Tiễn
Các Lệnh Tạo Bảng Thường Dùng Trong Migrations
Dưới đây là danh sách các lệnh tạo bảng thường dùng trong migrations cùng chú thích:
$table->bigIncrements('id')
: Tạo khóa chính với kiểu BIGINTEGER.$table->string('name', 100)
: Tạo cột kiểu VARCHAR tối đa 100 ký tự.$table->text('description')
: Tạo cột kiểu TEXT.$table->boolean('is_active')
: Tạo cột kiểu BOOLEAN.$table->dateTime('created_at')
: Tạo cột kiểu DATETIME.$table->softDeletes()
: Tạo cộtdeleted_at
cho tính năng xóa mềm.
Kết Luận
Việc quản lý cơ sở dữ liệu thông qua migrations trong Laravel không chỉ giúp bạn giảm thiểu công sức khi phải thao tác thủ công trong công cụ quản trị mà còn tạo ra một quy trình làm việc rõ ràng và dễ dàng theo dõi hơn. Bằng cách định nghĩa rõ ràng các thao tác thực hiện trên cơ sở dữ liệu trong mã nguồn, bạn sẽ có một ứng dụng dễ duy trì và phát triển hơn trong tương lai. Hãy tận dụng tính năng mạnh mẽ này để xây dựng dự án của bạn một cách hiệu quả nhất!