+2

Seeder và Model Factory trong Laravel bạn đã thử chưa ??

Hôm nay mình sẽ tiếp tục cùng các bạn tìm hiểu về seeding và model factory nhé. Bạn đang boăn khoăn làm sao để có được lượng dữ liệu để fix lên trang web để test, thay vì bạn phải insert thủ công như trước, thì nay bạn có thể thao tác nhanh chóng và đỡ tốn thời gian hơn với seeding Nào không dài dòng nữa, chúng ta cùng bắt tay vào tìm hiểu về seeding nhé.

1.Tìm hiểu sơ lược về thư mục

  • Seeding hay còn gọi là seeder,seed,.. thực ra nó là một class chứa code để tạo ra các dữ liệu mẫu cho database trong quá trình xây dựng ứng dụng.

  • Trong Seeder chúng ta có thể viết code của Query builder.

  • Cấu trúc thư mục của seeding

  • Tất cả các flie seeding được lưu trong thư mục seeds và được gọi trong flie DataTableSeeder.php.

2.Các bước tạo seeder

1. Insert theo từng bản ghi

  • Tạo một flie seeding bằng câu lệnh terminal php artisan make:seeder UsersTableSeeder

  • File UsersTableSeeder được tạo trong thư mục có cấu trúc như sau và tạo hàm run như sau:

  • Gọi hàm chạy file UserTableSeeder các trường dữ liệu như sau:

  • Tiến thực thi câu lệnh để insert vào database ta dùng câu lệnh sau Dùng câu lệnh để thực thi toàn bộ câu lệnh mà mình mong muốn. php artisan db:seed hoặc có thể dùng câu lệnh sau để thực thi một câu lệnh mà mình muốn. php artisan db:seed --class=UsersTableSeeder.

2. Insert dữ liệu theo mảng.

  • Bước 1: Tạo câu lệnh bằng terminal php artisan make:seeder ContentsTableSeeder

  • Bước 2: Tạo một mảng dữ liệu với vòng for như sau để insert một cách nhanh chóng.

  • Bước 3: Thưc thi câu lệnh dùng câu lệnh sau.

  • Bước 4: Gọi flie ContentsTableSeeder trong file DataTableSeeder.php

    php artisan db:seed --class= ContentsTableSeeder

3.Model Factory

Bạn thấy cách insert dữ liệu trên đã tối ưu chưa??, vẫn chưa đúng không, bây giờ chúng ta cùng nhau đến với việc insert dữ liệu nhóng hơn nhé, làm sao để dữ liệu được đa dạng không bị trùng lặp nhau với một dữ liệu lớn, bạn cũng băn khoăn làm sao để có thể tối ưu và xử lý dữ liệu một cách nhanh chóng nhất, chúng ta cùng nhau tìm hiểu về model factory nhé. Thư viện facetory là thư hiện rất hữu ích cho việc fake dữ liệu một cách nhanh chóng, thuận tiện giúp chúng ta tiết kiệm không mất thời gian. Nào chúng ta cùng nhau tìm hiểu nhé .

  • Các thư mục của file factory được tạo ra được đặt trong thư mục như sau:

  • Câu lệnh để tạo một fllie factory: php artisan make:factory UsersFactory Trong file UsersFactory ta insert các dữ liệu như sau:

  • Tiếp theo ta tạo file seeder với câu lệnh terminal như sau nhé php artisan make:factory UsersrTableSeeder

  • Gọi flie UsersrTableSeeder trong DatabaseSeeder.php như sau:

  • Thực thi với câu lệnh terminal như sau php artisan db:seed --class=UsersrTableSeeder ** Một vài chú ý ** Khi bạn đã viết các seeder class thì bạn có thể thực thi các câu lệnh như sau

Một chú ý nhỏ cho các bạn đó là bạn có thể sử dung câu lệnh để rollback lại tất cả migrations và seeding lại toàn bộ cấu trúc database nhé.

php artisan migrate:refresh --seed

4.Kết Luận

Trên đây là bài giới thiệu của mình về cách sử dụng seeder trong laravel, mong nó sẽ hữu ích cho các bạn nhé, như bạn thấy đấy việc seeding giúp chúng ta fake dữ liệu nhanh chóng cả về trường dữ liệu, cũng như hình ảnh một cách nhanh chóng tiết kiệm thời gian hơn đúng không nào.

5.Nguồn tham khảo

https://laravel.com/docs/5.7/seeding

https://laravel.com/docs/5.7/database-testing#writing-factories


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí