Migration laravel 8 là công cụ cho phép tạo các bảng, các cột của bảng trong cơ sở dữ liệu bằng dòng lệnh PHP. Ngoài ra Migration còn có khả năng cập nhật các cột (đổi tên, xóa cột), nội dung các bảng đã tồn tại. Thay vì phải sửa đổi bảng bằng thủ công thì bạn chỉ cần thực hiện bằng dòng lệnh đơn giản. Điểm tốt của Migration trong Laravel là làm việc được với nhiều cơ sở dữ liệu như: MySQL, SQL Server, PostgresSQL, ...
Tạo dữ liệu với Migration
- Migration cần được đặt bên trong thư mục /database/migrations/.
- Để Migration hoạt động, chúng ta cần kết nối với cơ sở dữ liệu, nếu bạn chưa biết cách kết nối thì bạn xem phần Kết nối database.
Thao tác với Migration, trước tiên bạn hãy mở cửa sổ lệnh cmd, di chuyển tới thư mục chứa project laravel 8 của bạn bằng lệnh:
cd C:\xampp\htdocs\Jetstream\
php artisan make:migration create_news_table
php artisan
- Công cụ hỗ trợ viết command line tích hợp sẵn trong Laravel, sẽ còn gặp lại nhiều.make:migration
- Lệnh tạo Migration.create_news_table
- Tên Migration do bạn tự đặt.
File Migration vừa tạo sẽ được lưu tại thư mục /database/migrations/, có nội dung như sau:
<?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; class CreateNewsTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('news', function (Blueprint $table) { $table->id(); $table->timestamps(); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('news'); } }
Trong đó
use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration;
là các khai báo sử dụng cần cho thao tác Migration.- Chúng ta cần quan tâm là 2 function
up()
vàdown()
:public function up()
dùng để thêm, bớt, thay đổi, ... nội dung bảng cơ sở dữ liệu - để thực thi ta cần sử dụng lệnhphp artisan migrate
public function down()
dùng phục hồi hay xóa bảng, ... - để thực thi ta cần sử dụng lệnhphp artisan migrate:rollback
Với nội dung trên, ta đã có thể tạo bảng news với 1 cột là id, để có thể nhiều cột hơn ta thêm trực tiếp vào bên trong function up():
<?php use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; class CreateNewsTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('news', function (Blueprint $table) { $table->increments('id'); $table->string('tentruyen'); $table->string('tacgia'); $table->string('chap'); $table->timestamps(); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('news'); } }
Nếu kiểm tra trong phpMyAdmin ngay lúc này thì bạn sẽ thấy tab news chưa tạo.
Để cập nhật thông tin vào Database thì ta cần thực thi lệnh
php artisan migrate
Khi chạy lệnh trên, nếu kết quả xuất hiện thông báo sau là thành công:
Kiểm tra database chúng ta sẽ thấy được bảng news
Bên cạnh bảng news chúng ta sẽ có bảng migrations
migrations
: chứa dữ liệu của Migration, lưu trữ thông tin các bảng dữ liệu được tạo trong Migration.
Bảng news sẽ rỗng do chúng ta vừa tạo
Xử lý lỗi khi chạy lệnh Migration
Nếu gặp lỗi sau khi chạy lệnh php artisan migrate
bị lỗi nguyên nhân có thể có thể đã tồn tại bảng dữ liệu trong database trùng tên, xem xét và xóa bảng đó đi và chạy lại lệnh.
Lời kết
Trên đây là cách sử dụng Migration trong Laravel 8 để tạo bảng dữ liệu trong database. Có gì thắc mắc các bạn coment ở dưới nhé. Cảm ơn ccacs bạn đã theo dõi.