Migrations trong Laravel 5

Bởi Hung Nguyen vào January 2016

Migrations là gì ?

Bạn có thể hiểu Migrations trong Laravel 5 giống như một version control của database, 1 tính năng giúp bạn quản lý các version của database. Migrations trong Laravel 5 cho phép bạn chỉnh sửa scheme database, cập nhật trang thái hiện tại của database. Migrations giúp cho việc quản lý database của bạn trở nên đễ dàng hơn.

Cấu hình database

Trước tiên để có thể sử dụng được migrations trong Laravel 5, thì bạn phải cấu hình cho Laravel biết được các thông tin cần thiết để kết nối đến database.

Các bạn lưu ý, khi cấu hình kết nối đến database Laravel 5 sẽ cung cấp cho chúng ta 2 file cấu hình như sau:

1. laravel-5/.env (chỉ sử dụng để chạy ở localhost)

2. laravel-5/config/database.php (dùng để chạy khi sản phẩm đã được đưa thành production)

Như các bạn đã biết, chúng ta đang chạy Laravel ở localhost, nên khi kết nối đến database, ta sẽ dùng file thứ 1 .env  để chỉnh cấu hình kết nối đến database mà không cần đụng tới file thứ 2 database.php vì chỉ khi nào đưa sản phẩm Laravel hoàn thiện lên production thì ta mới cần tới nó.

Nhưng ở đây mình cũng sẽ giới thiệu sơ lược về cách cấu hình ở production để các bạn nắm sơ qua để biết khi cần dùng đến sau này.

1. Cấu hình database cho production

Khi mở lên các bạn sẽ thấy file config/database.php có nội dung như sau:

 

Tại dòng

‘default’ => ‘mysql’,

Đây chính là loại cơ sở dữ liệu mà bạn sẽ dự định kết nối tới, mặc định nó là mysql, ngoài ra bạn có thể chọn sqlite, postgres,…

Sau khi đã chọn cơ sở dữ liệu, bạn phải tiếp tục điền các thông tin cấu hình cần thiết cho loại cơ sở dữ liệu đó. Ví dụ như ở đây mình xài là mysql thì mình sẽ chỉnh lại thông tin cấu hình như sau :

Với

2. Cấu hình ở local

Đây là phần cấu hình mà chúng ta sẽ sử dụng vì hiện tại Laravel 5 đang được setup chạy ở local.

Như đã nói ở trên, để cấu hình DB ở local thì các bạn sử dụng file .env

Mở file này lên và bạn cấu hình như dưới đây

 

Với

Sau khi điền đẩy đủ thông tin vào file .env như ở trên là bạn đã cấu hình xong kết nối đến database ở local. Tiếp đến chúng ta sẽ vào chủ để chính đó là sử dụng migrations trong Laravel.

Sử dụng migrations trong laravel 5

Đầy là phần chính trong bài viết ngày hôm nay, nên nó sẽ khá dài vì mình sẽ cố gắng viết thật chi tiết. Các bạn cố gắng theo dõi ha.

Việc đầu tiên khi sử dụng migrations trong Laravel 5 là bạn cần phải kiểm tra xem migrations đã hoạt động tốt trong Laravel hay chưa. Trong window, mở cmd (Ấn phím window, trong box Search programs and files, gõ cmd, rồi enter), rồi di chuyển đến thư mục chứa Laravel 5 của chúng ta

 

Tiếp đến các bạn gõ lệnh sau

nếu không thấy thông báo lỗi nào hiện ra như hình dưới

magrations-sucess

là các bạn đã cấu hình kết nối đến database thành công, còn không các bạn hãy kiểm tra lại thông tin cấu hình ở trên.

Sau khi chạy lệnh trên, Laravel 5 đồng thời đã thực thi 2 file trong thư mục laravel-5/database/migrations đó là 2014_10_12_000000_create_users_table.php và 2014_10_12_100000_create_password_resets_table.php

migrations-folder

và tạo ra 2 bảng là user và password_resets trong database . Để kiểm tra bạn có thể vào phpmyadmin, chọn database đã tạo trước đó của bạn (ở đây là laravel5), bạn sẽ thấy 2 bảng là users và password_resets đã được tạo ra. Đây chính là 2 bảng mặc định laravel5 dùng cho mục đích lưu thông tin user và reset lại password khi bạn cần dùng đến sau này.

Đến đây, các bạn cũng đã phần nào mường tượng được tính năng của migrations trong laravel rồi phải không? Nhìn 1 chút sơ qua 2 file trong thư mục migrations, bạn sẽ thấy 2 function là up() và down(). Function up() thường là dùng để tạo bảng, function down() thường có chức năng dùng để rollback lại trang thái ban đầu tại thời điểm mà function up() chưa được thực thi. Chức năng của function down() thường là xóa bảng (drop table).

Nhìn sơ qua 1 tí về function up() trong file 2014_10_12_000000_create_users_table.php

 

Bạn sẽ thấy rằng đây là function có tác dụng tạo ra bảng users, với

id : thuộc tính tự tăng

name : kiểu string

email : kiểu string, thuộc tính unique

password : kiểu string, độ dài 60

….

Và khi chạy lệnh
php artisan migrate
hệ thống sẽ thực thi function up() này và tạo ra bảng users trong database. Tương tự ngược lại, với lệnh
php artisan migrate:rollback
hệ thống sẽ thực thi function down()

và xóa bảng users (để kiểm tra các bạn vào phpmyadmin, lúc này database của bạn sẽ không còn bảng users nữa).

OK, nói đến đây thì các bạn cũng đã phần nào hiểu về migrations rồi phải không nào ? Migrations đó là cách mà Laravel giúp ta tương tác với database mà không cần phải đụng vào database, chỉ cần thao tác trên các function dựng sẵn của Laravel. Ngoài ra Migrations giúp ta quản lý các phiên bản (version) của Laravel được dễ dàng hơn.