Factory Laravel là gì

Tiếp tục với chuỗi bài làm việc với Database trong Laravel, bài này mình sẽ giới thiệu với mọi người về seeder trong Laravel 8.

1. Seeder là gì?

Seeder trong Laravel là class cho phép chúng ta xử lý dữ liệu trong database. Class này sẽ hỗ trợ chúng ta tạo ra data test, thay đổi cập nhật dữ liệu khi cần thiết.

Tất cả các seeder trong Laravel đều được đặt trong thư mục database/seeders. Mặc định thì Laravel đã định nghĩa sẵn cho chúng ta class DatabaseSeeder nằm sãn trong thư mục trên. Và chúng ta có thể sử dụng phương thức call để gọi các seeder khác khi cần thiết.

2. Tạo mới Seeder.

Để tạo mới một seeder trong Laravel các bạn có thể sử dụng command:

php artisan make:seeder SeederName

Trong đó: SeederName là tên của seeder các bạn muốn tạo.

VD: Mình sẽ tạo một UserSeeder.

php artisan make:seeder UserSeeder

Một Seeder class mặc định chỉ chứa duy nhất một phương thức run. Phương thức này sẽ được thực thi khi chúng ta chạy câu lệnh db:seed. Trong phương thức này các bạn có thể viết logic để làm việc với DB như sử dụng Query Builder hoặc dùng Eloquent model factories.

VD: Mình sẽ sử dụng Query Builder insert thêm user trong UserSeeder vừa tạo ở trên.

insert[[ 'name' => Str::random[10], 'email' => Str::random[10].'@gmail.com', 'password' => Hash::make['password'], ]]; } }

Gọicác seeder khác.

Để thực thi các seeder khác trong seeder nào đó các bạn có thể sử dụng phương thức call.

VD: Gọi UserSeeder trong DatabaseSeeder.

call[[ UserSeeder::class ]]; } }

3. Chạy seeder.

Để thực thi các seeder trong Laravel các bạn sử dụng câu lệnh

php artisan db:seed

Câu lệnh này sẽ thực thi Database\Seeders\DatabaseSeeder class.

Để thực thi một seeder cụ thể trong Laravel các bạn truyền thêm tham số --class với seeder class các bạn muốn chạy.

VD: Thực thi UserSeeder.

php artisan db:seed --class=UserSeeder

Khi ứng dụng qua bạn đang ở trên production, mà các bạn chạy seeding thì Laravel sẽ hiển thị ra một prompt để xác nhận lại xem các bạn có thực sự muốn thực thi seeder trên production hay không. Nếu các bạn không muốn hiển thị prompt mà muốn force chạy luôn seed các bạn có thểm truyền thêm tham số --force.

VD:

php artisan db:seed --force

3. Lời kết.

Trong quá trình phát triển dự án, việc thay đổi dữ liệu database là điều không tránh khỏi, chính vì thế seeder sẽ hỗ trợ chúng ta làm việc đó một cách đơn giản.

Video liên quan

Chủ Đề