Tìm hiểu về Seeder trong Laravel

264
Seeder Laravel là gì

Người viết: Hoàng Nguyễn

Xin chào anh em, tiếp tục series Laravel và những điều thú vị về nó, hôm nay mình sẽ giới thiệu về Seeder trong Laravel cho các bạn. Như các bạn biết đấy, khi chúng ta tạo xong CSDL, bây giờ chúng ta cần có một số lượng dữ liệu kha khá lớn để hiển thị lên website của chúng ta.

Thay vì cách nhập tay thủ công thông thường vừa tốn thời gian vừa tốn công thì Laravel hỗ trợ chúng ta Seeder để nhanh chóng tạo dữ liệu , nhanh chóng để phát triển tính năng của chúng ta.

  Optimizing Laravel - Tối ưu hoá Laravel
  Top 3 Laravel CMS được đánh giá cao

Cấu trúc thư mục

Tất cả các seed class được đặt trong thư mục database/seeds. Trong thư mục này đã có sẵn file DataTableSeeder.php

Seeder Laravel là gì

Mặc định trong file này sẽ có class DatabaseSeeder có function run() call tới các seed class khác, cho phép bạn có thể control được thứ tự thêm dữ liệu theo thứ tự bạn sắp xếp.

Các cách insert dữ liệu bằng Seeder

Có rất nhiều cách để thêm dữ liệu bằng seeder , sau đây mình xin giới thiệu về một trong những cách đó.

Viết thẳng trong file DataTableSeeder.php

Chúng ta có thể viết trực tiếp trong function run():

hoặc chúng ta cũng có thể tách riêng ra 1 class và sử dụng hàm hàm call() trong function run().

Seeder Laravel là gì
Lúc này xong , chúng ta sẽ chạy câu lệnh để thực thi chèn dữ liệu vào bảng catgories : php artisan db:seed.

Sử dụng Model Factories

Các bạn thấy sử dụng cách trên nó vẫn còn thủ công, chúng ta phải thêm từng record cho một bảng bằng tay. Thay vì thế, để sinh ra một lượng dữ liệu lớn như 100 records chúng ta sẽ sử dụng Model Factories. Bây giờ các bạn hãy follow theo ví dụ của mình để có thể hiểu thêm về nó nhé.

Ví dụ đặt ra là chúng ta cần tạo 1000 records trong bảng users. Trong folder database ta sẽ thấy còn có một folder nữa là factories, bên trong folder này có 1 file tên là UserFactory.php dùng để định nghĩa cấu trúc của dữ liệu mẫu mà ta muốn thêm vào CSDL theo từng bảng. Trong folder đó có chứa sẵn UserFactory.php

Bây giờ chúng ta tạo 1 file giống ý hệt file này nhưng đổi tên thành SupplierFactory.php hoặc có thể sử dụng terminal để tạo php artisan make:factory SupplierFactory

Các bạn sẽ nhìn thấy trong file này nó use Faker\Generator as Faker. Đây là một thư viện fake data rất hữu ích, chúng ta không cần phải nghĩ ra những địa chỉ, những số điện thoại hay email để thêm vào table. Điểu đó đã được thự viện Faker hỗ trợ hết.

Tiếp theo chúng ta sẽ sẽ tạo file seeder: php artisan make:seed SupplierTableSeeder, sau khi ấn enter một file SuplierTableSeeder sễ được sinh ra trong folder database/seeds.

Trong function run() chúng ta sẽ sử dụng hàm của helper trong Laravel là hàm factory(). Đối số thứ nhất truyền vào class Model , đối số thứ hai truyền vào số lượng bản ghi muốn sính ra.

Giờ chúng ta vào file DatableSeeder.php trong hàm run():

Và cuối cùng chạy lệnh php artisan db:seed

Hoặc chúng ta cũng có thể chạy file SupplierTableSeeder.php bằng câu lệnh : php artisan db:seed --class=SupplierTableSeeder

Chú ý!

Để chạy nhiều Seeder ta sẽ tạo nhiều file Seeder rồi gọi chúng trong functionrun() ở file DataTableSeeder.php:

Các bạn hãy chú ý table nào cần thêm dữ liệu trước để sắp xếp thứ tự trong function run() nhé!!!

Kết luận

Bài viết trên nhằm giới thiệu đến các bạn sử dụng Seeder trong Laravel , vừa tiết kiệm thời gian vừa đỡ tốn công. Mọi thắc mắc gì các bạn comment phía dưới nhé. Hẹn gặp lại các bạn ở các bài tiếp theo.

Tham khảo

Có thể bạn quan tâm:

Xem thêm việc làm Software Developers trên TopDev

TopDev via viblo.asia

  Junior đi phỏng vấn Laravel thì sẽ được hỏi những gì?
  Laravel 6 có gì HOT???
SHARE