Seeders
namespace Database\Seeders;
use App\Models\User;
use Illuminate\Database\Seeder;
class DatabaseSeeder extends Seeder
{
public function run(): void
{
$this->call([
CategorySeeder::class,
PostSeeder::class,
]);
User::factory()
->count(100)
->hasPosts(5)
->create();
}
}
Model Factories
namespace Database\Factories;
use App\Models\User;
use Illuminate\Database\Eloquent\Factories\Factory;
class UserFactory extends Factory
{
protected $model = User::class;
public function definition(): array
{
return [
"name" => fake()->name(),
"email" => fake()->unique()->safeEmail(),
"password" => bcrypt("password"),
"is_active" => fake()->boolean(90),
];
}
public function admin(): static
{
return $this->state(fn (array $attrs) => [
"is_admin" => true,
]);
}
}
Factory Relationships
// Has many
User::factory()->hasPosts(3)->create();
// Belongs to
Post::factory()->for(User::factory()->admin())->create();
// Many to many
User::factory()->hasAttached(
Role::factory()->count(2),
["assigned_at" => now()]
)->create();