- vừa được xem lúc

Sử dụng Factory trong Laravel 8

0 0 12

Người đăng: Gấu con

Theo Viblo Asia

Hi mọi người,
Bài viết này mình sẽ chia sẻ cách sử dụng factory tinker trong laravel 8.
Như mọi người đã biết testing là một phần rất quan trọng của bất kỳ dự án phát triển web nào.
Đôi khi chúng ta có yêu cầu phải thêm 100 hoặc 1000 dummy records(dữ liệu giả) vào tables nào đó hoặc chức năng phân trang dữ liệu phải cần đến nhiều bản ghi để test.
Thay vì dùng tay để insert dummy records vào tables và mất nhiều thời gian để insert chúng. Do đó, Laravel đã có chức năng tinker cái sẽ giúp chúng ta tạo nhiều dummy records trong table một cách nhanh chóng.
Mặc định trong ứng dụng laravel đã cung cấp sẵn User factory và bạn có thể tìm thấy nó trong url bên dưới:
url: database/factories/UserFactory.php.
Bạn có thể tạo một số bản ghi bằng cách sử dụng code bên dưới.

 <?php namespace App\Http\Controllers; use App\Models\User; class UserController extends Controller
{ public function index() { User::factory()->count(5)->create(); }
} 

Output:


Create Custom Factory:

Khi bạn muốn tạo các dummy records cho các tables như items , products or admin thì bạn phải tạo một new factory mới.
Ví dụ bên dưới mình sẽ tạo item factory và thực hiện insert 500 dummy records vào bảng items.
app\Models\Item.php
Thêm code vào model như bên dưới

<?php namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model; class Item extends Model
{ use HasFactory; /** * The attributes that are mass assignable. * * @var array<int, string> */ protected $fillable = [ 'id', 'title', 'description', ];
} 

Tiếp theo mở command và tạo item factory bằng command bên dưới.

php artisan make:factory ItemFactory --model=Item

Bây giờ new factory class cho item đã được tạo trong thư mục bên dưới.
database\factories\ItemFactory.php
Hãy thêm code bên dưới vào file ItemFactory.php.

<?php namespace Database\Factories; use App\Models\Item;
use Illuminate\Database\Eloquent\Factories\Factory;
use Illuminate\Support\Str; class ItemFactory extends Factory
{ /** * The name of the factory's corresponding model. * * @var string */ protected $model = Item::class; /** * Define the model's default state. * * @return array */ public function definition() { return [ 'title' => $this->faker->name, 'description' => $this->faker->text, ]; }
} 

Hàm definition() sẽ thêm dữ liệu mẫu tương ứng với trường title, description vào table items.
Sử dụng Faker, bạn có thể tạo các kiểu dữ liệu sau:

Numbers Lorem text Person i.e. titles, names, gender etc. Addresses Phone numbers Companies Text DateTime Internet i.e. domains, URLs, emails etc. User Agents Payments i.e. MasterCard Colour Files Images uuid Barcodes

Cuối cùng hãy tạo và thêm code vào controller bên dưới để tạo 500 dummy records.
app\Http\Controllers\ItemController.php

<?php namespace App\Http\Controllers; use App\Models\Item; class ItemController extends Controller
{ /** * Display a listing of the resource. * * @return \Illuminate\Http\Response */ public function index() { Item::factory()->count(500)->create(); }
} 

Output:
Bạn sẽ thấy 500 dummy records trên table items.


Hy vọng bài viết này có ích cho các bạn!

Bình luận

Bài viết tương tự

- vừa được xem lúc

Tìm hiểu về Resource Controller trong Laravel

Giới thiệu. Trong laravel, việc sử dụng các route post, get, group để gọi đến 1 action của Controller đã là quá quen đối với các bạn sử dụng framework này.

0 0 358

- vừa được xem lúc

Phân quyền đơn giản với package Laravel permission

Như các bạn đã biết, phân quyền trong một ứng dụng là một phần không thể thiếu trong việc phát triển phần mềm, dù đó là ứng dụng web hay là mobile. Vậy nên, hôm nay mình sẽ giới thiệu một package có thể giúp các bạn phân quyền nhanh và đơn giản trong một website được viết bằng PHP với framework là L

0 0 449

- vừa được xem lúc

Sử dụng Swagger để xây dựng API documentation

Giới thiệu về Swagger. RESTful API là một tiêu chuẩn dùng trong việc thiết kế API cho các ứng dụng web (thiết kế Web services) để tiện cho việc quản lý các resource.

0 0 1k

- vừa được xem lúc

Ví dụ CRUD với Laravel và Vuejs.

1. Cài đặt Laravel. composer create-project --prefer-dist laravel/laravel vuelaravelcrud. .

0 0 160

- vừa được xem lúc

Một số tips khi dùng laravel (Part 1)

1. Show database query in raw SQL format. DB::enableQueryLog(); // Bật tính năng query logging. DB::table('users')->get(); // Chạy truy vấn bạn muốn ghi log.

0 0 84

- vừa được xem lúc

Inertiajs - Xây dựng Single Page App không cần API

Tiêu đề là mình lấy từ trang chủ của https://inertiajs.com/ chứ không phải mình tự nghĩ ra đâu nhé :v. Lâu lâu rồi chưa động tới Laravel (dự án cuối cùng mình code là ở ver 5.8), thế nên một ngày đẹp trời lượn vào đọc docs ver 8.

0 0 242