Tìm hiểu về Seeder trong Laravel (ok)
https://viblo.asia/p/tim-hieu-ve-seeder-trong-laravel-bWrZn1MmKxw
Last updated
https://viblo.asia/p/tim-hieu-ve-seeder-trong-laravel-bWrZn1MmKxw
Last updated
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(các bạn có thể tham khảo tại bài viết Migration của mình để rõ hơn cách tạo table bằng Migration trong Laravel). 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.
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
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ó 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 đó.
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()
.
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ạ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é!!!
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.
https://laravel.com/docs/5.6/seeding https://laravel.com/docs/5.6/database-testing#writing-factories https://github.com/fzaninotto/Faker
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
.