Thứ Hai, 23 tháng 7, 2018

Migrations trong Laravel 5

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.

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
cài đặt migration thành công
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
cấu trúc thư mục migrations
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
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
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.
Nếu vẫn còn khó hiểu và  để hiểu rõ hơn về Migrations, thì chúng ta cùng nhau làm ví dụ để hiểu rõ hơn

Ví dụ về Migrations trong Laravel 5

Giả sử như giờ mình muốn tạo ra bảng mới đặt tên là articles dùng để chưa các bài viết mình sẽ làm như sau:
1. Gõ lệnh
migartions-articles
vào thư mục database/migrations bạn sẽ thấy file 2015_03_01_042501_create_articles_table.php vừa được tạo với nội dung:
2. Gõ tiếp lệnh
để thực thi file vừa tạo ở trên, vào database bạn sẽ thấy bảng articles đã được tạo với 3 column là id, created_at, updated_at.
3. Nếu như bạn muốn thêm 1 vài column mới vào bảng articles thì bạn sẽ làm như thế nào ? Ở đây mình sẽ chỉ cho các bạn cách mình hay dùng, đơn giản là thực thi hàm down() để xóa lại bảng articles vừa tạo bằng lệnh
sau đó, trong function up() edit lại để thêm các cột mới như name, author,…
rồi chạy lại lệnh
để tao lại bảng articles là được. Cách này hơi cùi, vì ở Laravel 5 đã có hỗ trợ bạn thêm cột mới bằng lệnh migrations luôn. Mình sẽ nhắc đến nó trong các bài viết tới.

Không có nhận xét nào:

Đăng nhận xét

Laravel với MongoDB

Mở đầu Hello anh em, đến hẹn lại lên hôm nay mình xin chia sẻ với mọi người về chủ đề Laravel kết hợp với MongoDB mà thông thường ta hay ...