Skip to content

Seeder

Seeders are used to insert sample data into your database, very useful during application development and testing.

INFO

Seeders are organized in the database/seeders directory.

INFO

Mass Assignment will be automatically disabled when you run seeders to ensure that all fields can be assigned values.

Creating Seeder

Generate Seeder

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

Laratype will create a new seeder file in the database/seeders/ directory with the name UserSeeder.ts.

Writing Seeder

Each seeder inherits from the Seeder class and must implement the run method, where you define the logic to insert data into the database.

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();
  }
}

Using Factories

You can also use factories to create sample data in your seeder. First, see the Factory section to learn how to create factories.

Assuming you have defined a factory for the User model, you can use it in the seeder as follows to create 10 random users:

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()
  }
}

Calling Other Seeders

You can call another seeder from within the current seeder using the call method:

ts
import { Seeder } from "@laratype/database";
import UserSeeder from "./UserSeeder";

export default class DatabaseSeeder extends Seeder {
  public async run() {
    await this.call([
      UserSeeder
    ])
  }
}

Running Seeder

After defining the seeder, you can run it to insert data into your database, see more in the Running Specific Seeder section.

Command

Running 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

Running Specific Seeder

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