Seeder
Seeder được sử dụng để chèn dữ liệu mẫu vào cơ sở dữ liệu của bạn, rất hữu ích trong quá trình phát triển và kiểm thử ứng dụng.
INFO
Seeder được tổ chức trong thư mục database/seeders.
INFO
Mass Assignment sẽ tự động tắt khi bạn chạy seeder để đảm bảo rằng tất cả các trường đều có thể được gán giá trị.
Tạo Seeder
Generate Seeder
$ npx sauf make:seeder UserSeeder$ pnpx sauf make:seeder UserSeeder$ bunx sauf make:seeder UserSeederLaratype sẽ tạo một file seeder mới trong thư mục database/seeders/ với tên UserSeeder.ts.
Writing Seeder
Mỗi một seeder kế thừa từ lớp Seeder và phải triển khai phương thức run, nơi bạn định nghĩa logic để chèn dữ liệu vào cơ sở dữ liệu.
import { Seeder } from "@laratype/database";
import User from "../../src/models/User";
export default class UserSeeder extends Seeder {
public async run(): Promise<void> {
const users = await User.create({
name: "John Doe",
email: "[email protected]"
}).save();
}
}Sử dụng Factories
Bạn cũng có thể sử dụng factories để tạo dữ liệu mẫu trong seeder của mình. Trước tiên, hãy xem phần Factory để biết cách tạo factories.
Giả sử bạn đã định nghĩa một factory cho model User, bạn có thể sử dụng nó trong seeder như sau để tạo ra 10 user ngẫu nhiên:
import { Seeder } from "@laratype/database";
import User from "../../src/models/User";
import UserFactory from "../factories/UserFactory";
export default class UserSeeder extends Seeder {
public async run(): Promise<void> {
const users = await UserFactory.make<User>().count(10).create()
}
}Gọi seeder khác
Bạn có thể gọi một seeder khác từ trong seeder hiện tại bằng cách sử dụng phương thức call:
import { Seeder } from "@laratype/database";
import UserSeeder from "./UserSeeder";
export default class DatabaseSeeder extends Seeder {
public async run() {
await this.call([
UserSeeder
])
}
}Chạy Seeder
Sau khi định nghĩa seeder, bạn có thể chạy nó để chèn dữ liệu vào cơ sở dữ liệu của mình, xem thêm trong phần Chạy Seeder cụ thể.
Command
Chạy Seeder
Development
$ npx sauf db:seed$ pnpx sauf db:seed$ bunx sauf db:seedProduction
$ npm run saufx db:seed$ pnpm saufx db:seed$ bun run saufx db:seedChạy Seeder cụ thể
Development
$ npx sauf db:seed --class=UserSeeder$ pnpx sauf db:seed --class=UserSeeder$ bunx sauf db:seed --class=UserSeederProduction
$ npm run saufx db:seed --class=UserSeeder$ pnpm saufx db:seed --class=UserSeeder$ bun run saufx db:seed --class=UserSeeder