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
$ npx sauf make:seeder UserSeeder$ pnpx sauf make:seeder UserSeeder$ bunx sauf make:seeder UserSeederLaratype 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.
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:
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:
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
$ 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:seedRunning Specific Seeder
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