Migrations và Seeding trong Laravel

Rate this post

Migration cơ sở dữ liệu trong Laravel cung cấp cho bạn một cách dễ dàng việc quản lý những schema CSDL trong ứng dụng. Khi bạn sử dụng migration, nhiều tác vụ liên quan tới CSDL schema dễ dàng hơn rất nhiều; bằng cách sử dụng migration bạn có thể thay đổi cấu trúc của bảng cơ sở dữ liệu, bạn có thể giữ lại những dữ liệu cũ bất cứ khi nào cho dù hiện tại bạn có thay đổi.

Việc cài đặt Migrations

Trướng khi bạn tạo một migration, bạn cần khởi tạo một thư mục chứa những file này trong CSDL, bạn có thể dùng câu lệnh sau

artisan migrate:install

Trên cửa sổ CMD bạn nên trỏ về thư mục ứng dụng Laravel của bạn

Sau đó chạy câu lệnh:

Tạo bảng CSDL sử dụng Migration

Bây giờ chúng ta sẽ tạo một bảng CSDL tên là “articles” trong ứng dụng của bạn. Đầu tiên chúng ta cần tạo lớp Article được mở rộng từ lớp Migration của Laravel nằm trong thư mục app/database/migrations.

Chúng ta sử dụng câu lệnh sau

Phần “2013_11_11_223728” của tên file là thời gian hiện tại tạo ra file.

Đoạn code sinh ra sẽ như sau

Để xác định sự thay đổi trong CSDL, ta sử dụng câu lệnh artisan migratie, câu lệnh này sẽ gọi phương thức up trong lớp Migration. Còn nếu bạn muốn rollback migration, bạn sử dụng câu lệnh artisan migrate:rollback nó sẽ gọi phương thức down.

Dưới đây là một số câu lệnh của những hàm liên quan tới Schema mà Laravel cung cấp

Câu lệnh Diễn giãi
$table->increments(‘id’);
Tạo khóa ID tự động tăng trong bảng
$table->string(’email’); Trường dữ liệu khai báo với kiểu VARCHAR
$table->string(‘name’, 100); Trường dữ liệu khai báo với kiểu VARCHAR với số kí tự 100
$table->integer(‘votes’); Trường dữ liệu khai báo với kiểu INTEGER
$table->float(‘amount’); Trường dữ liệu khai báo với kiểu FLOAT
$table->boolean(‘confirmed’); Trường dữ liệu khai báo với kiểu BOOLEAN
$table->timestamps(); Tự động thêm trường created_at, updated_at
$table->text(‘description’); Trường dữ liệu khai báo với kiểu TEXT
->nullable() Trường dữ liệu có thể ghi dữ liệu null
->default($value) Đặt giá trị mặc định cho trường
->unsigned() Đặt trường dữ liệu là số nguyên dương

Để hiểu rõ hơn danh sách những hàm chúng ta xem tại Laravel’s official documentation. Dưới dây là đoạn code mẫu:

Sau khi thay đổi file migration, bạn cần chạy câu lệnh artisan migration, và trong bảng CSDL ta sẽ thấy như sau

Seeding CSDL

Laravel bao gồm cách đơn giản để seed cở sở dữ liệu của bạn với dữ liệu test sử dụng lớp seed. Tất cả những lớp seed được lưu trữ trong app/database/seeds. Cách đặt tên của lớp seed tùy vào chúng ta, nhưng laravel khuyến cáo nên đặt như UserTableSeeder. Mặc định thì lớp DatabaseSeeder được tạo ra bởi chương trình. Từ lớp này thì bạn có thể gọi và chạy những lớp seed khác, cho phép bạn điều khiển lớp seed theo thứ tự.

Để seed cở sở dữ liệu, bạn có thể sử dụng câu lệnh db:seed trong Artisan CLI

Mặc định thì câu lệnh db:seed sẽ chạy lớp  DatabaseSeeder, nhưng bạn muốn sử dụng lớp khác thì bạn có thể thêm lựa chọn –class trước

Bạn cũng có thể sử dụng câu lệnh migrate:refresh để seed cơ sở dữ liệu của bạn, câu lệnh này cũng được dùng cho việc rollback hay chạy lại migration của bạn