Skip to content

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

sh
$ npx sauf make:seeder UserSeeder
sh
$ pnpx sauf make:seeder UserSeeder
sh
$ bunx sauf make:seeder UserSeeder

Laratype 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.

ts
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:

ts
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:

ts
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
sh
$ npx sauf db:seed
sh
$ pnpx sauf db:seed
sh
$ bunx sauf db:seed
Production
sh
$ npm run saufx db:seed
sh
$ pnpm saufx db:seed
sh
$ bun run saufx db:seed

Chạy Seeder cụ thể

Development
sh
$ npx sauf db:seed --class=UserSeeder
sh
$ pnpx sauf db:seed --class=UserSeeder
sh
$ bunx sauf db:seed --class=UserSeeder
Production
sh
$ npm run saufx db:seed --class=UserSeeder
sh
$ pnpm saufx db:seed --class=UserSeeder
sh
$ bun run saufx db:seed --class=UserSeeder