VANHIEP.NET - Làm web giá rẻ - Thiết Kế Website - Thiết Kế Ứng Dụng Mobile
Sử dụng Factory trong Laravel

Sử dụng Factory trong Laravel

Factory là thư viện để tạo ra các dữ liệu mẫu 1 cách tự động và nhanh chóng. factory làm việc kết hợp với model và các thành phần seeder và migrate trong laravel tạo thành 1 bộ công cụ hữu ích cho các nhà phát triển backend. Trong bài viết này tôi sẽ hướng dẫn chi tiết cách sử dụng công cụ factory này.

I. TẠO BẢNG DỮ LIỆU BẰNG MIGRATIONS

Để thực hiện được factory dữ liệu chúng ta cần tạo migrations trước để tạo ra bảng dữ liệu. Trong bài hướng dẫn này tôi sử dụng bảng users để factory dữ liệu nên tôi không caanfh tạo migrations nữa, vì bảng users mặc định khi cài đặt thì laravel đã tự động tạo cho chúng ta, tuy nhiên thì các trường dữ liệu chúng ta cần thêm vào cho đầy đủ. Chúng ta tiến hành thêm cột avatar và cột slug như sau.

mở file migrations của bạn trong thư mục database/migrations sửa đoạn code như hình dưới

Sử dụng Factory trong Laravel

Sau đó chúng ta chạy lệnh sau để tạo bảng dữ liệu

php artisan migrate

Nếu như bạn đã chạy lệnh migrate trước đó thì bạn có thể chạy lệnh sau để reset lại bảng dữ liệu

php artisan migrate:refresh 

Nếu chạy thành công thì ta sẽ thấy thông báo như sau ở terninal

Sử dụng Factory trong Laravel

Chúng ta có thể kiểm tra kết qua trong database

Sử dụng Factory trong Laravel

Như vậy tôi đã tạo được bảng dữ liệu users đồng thời thêm 2 cột là avatar và slug. Trong thực tế các dự án thì chúng ta cũng có thể sẽ gặp trường hợp cần thêm nhiều trường dữ liệu khác nữa thì chúng ta cũng thực hiện tương tự như thêm 2 trường này.

 

II. TẠO FILE FACTORY VÀ VIẾT CÁC LOGIC FACTORY DỮ LIỆU

 

Để tạo factory ta chạy lệnh sau

php artisan make:factory nameFactory

Ở đây tôi có một lưu ý dành cho bạn là tên của factory bắt buộc phải có Factory ở phía sau như trong câu lệnh trên, nếu như bạn để mỗi name thì lệnh chạy sẽ bị lỗi. Trong trường hợp này tôi đang thao tác với bản users nên laravel đã tạo sẵn cho tôi file factory rồi nên không phải tạo nữa, sau này cần thực hiện với các bảng dữ liệu khác thì bạn cần phải tự tạo ra file này bằng câu lệnh ở trên.

Sử dụng Factory trong Laravel

Bạn vào database/factories và mở file facory của mình lên. ở hình trên laravel đã tự tạo sẵn cho chúng ta các trường cơ bản. bây giờ cùng ta thêm trường avatar và trường slug như sau

Sử dụng Factory trong Laravel

Ở trên tôi đã khai báo thêm $name và dùng biến name để tạo ra chuỗi slug dùng hàm Str. đồng thời tạo ra các thư lục trong public như hình trên. trong thư mục /upload/files/users tôi tải 1 số hình ảnh để làm avatar, khi chạy factory thì laravel sẽ tự động lấy các hình ảnh trong mục này để làm avatar và copy nó sang mục /upload/image/users đồng thời ganarate tên file. khai báo false ở hàm factory file để chỉ trả về tên file. nếu để true thì hàm sẽ trả về fullpath của file trên máy tính, như vậy thì khi xử lý login link ảnh sẽ bị sai.

Sử dụng Factory trong Laravel

 

Chúng ta tải 1 số hình ảnh vào thư mục nguồn đã khai báo để làm avatar.

III. TẠO SEEDER CHO BẢNG DỮ LIỆU

 

Để tạo seeder chúng ta chạy lệnh sau

php artisan make:seeder UserSeeder

Trong trường hợp này tôi đặt tên là UserSeeder. File seeder được tạo ra trong thư mục database/seeder

Sử dụng Factory trong Laravel

Lưu ý rằng trong thư mục seeder có file tên là DatabseSeeder.php file này là file chạy chính của seeder, sau khi ta khai báo các fie seeder của các bảng dữ liệu thì chúng ta phải gọi file seeder của các bảng muốn chạy seeder trong file này. Nếu chúng ta không gọi trong file này thì dữ liệu của bảng đó sẽ không được seed.

Sử dụng Factory trong Laravel

 

Ở file UserSeeder vừa tạo tôi sẽ use model vào và gọi hàm factory như hình, hàm count chúng ta truyền vào số bản ghi cần tạo. để sử dụng được hàm factory thì trong model chúng ta có nhúng thư viện factory như hình sau.

 

Sử dụng Factory trong Laravel

Việc nhúng thư viện factory trong model thì laravel đã tự động nhúng cho chúng ta rồi, chúng ta chỉ việc sử dụng nó thôi.

 

IV. CHẠY SEED ĐỂ FACTORY DỮ LIỆU

Bạn mở file DatabaseSeeder.php trong thư mục database/seeder lên và thêm dòng call đến UserSeeder như hình dưới.

Sử dụng Factory trong Laravel

Tiếp theo chúng ta chạy lệnh sau 

php artisan db:seed

 

Chúng ta được kết quả như sau

Sử dụng Factory trong Laravel

 

Chúng ta kiểm tra dữ liệu trong database

Sử dụng Factory trong Laravel

 

Chúng ta thử lấy 1 đường link ở cột avatar nối với chuối localhost:8000 xem hình ảnh có hiển thị hay không

 

Sử dụng Factory trong Laravel

Như vậy là việc factory ảnh avatar chúng ta đã thành công.

V. TỔNG KẾT

Như vậy là trên đây tôi đã hướng dẫn chi tiết cách để chúng ta tạo ra dữ liệu mẫu hoàn toàn tự động, trong đó có sử dụng những hình ảnh của chúng ta để random ra avatar cho các bản ghi. Việc factory này có thể sẽ rất cần thiết để chúng ta triển khai các dự án backend cung cấp API cho các ứng dụng fontend, chúng ta dùng để tạo dữ liệu mẫu và test các chức năng khi phát triển hệ thống. Chúc bạn sẽ thực hiện thành công.