How to create or register multiple database seeders in laravel 9

In this article, we discuss how to create a database seeder in laravel. How to insert or update data in a database table by laravel seeders. How to create multiple database seeder with example.

Why we use database seeder. Database seeder is provide tool for create dummy or fake data for testing purpose. Here you see Database seeder from scratch. Create custom seeder in laravel.


Laravel database seeders

In the laravel seeder store data in multiple tables and it is define in database/seeders directory.

How to create a databse seeder

Laravel create new seeder by running make:seeder artisan command.

php artisan make:seeder CitySeeder

Now our CitySeeder.php file creates in the database/seeders directory. A seeder contain one method run() this is call when db:seed artisan command run. In the run method, you can insert data by query builder, insert eloquent, or by custom SQL queries.

See below example here we create a city data

database/seeders/CitySeeder.php

<?php
  
namespace Database\Seeders;
  
use Illuminate\Database\Seeder;
use App\Models\City;
  
class CitySeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        for ($i=0; $i < 5; $i++) {
            City::create([
                    "name" => str_random(8),
                    "population" => random(10000, 100000),
                    "description" => str_random(16),
                ]);
        }
    }
}
Run this seeder

You can run custom seeder individual by calling class name.

php artisan db:seed --class=CitySeeder

Create Multiple Seeders

You can also create and use other custom seeder classes using make:seeder command like create a UserSeeder class by running php artisan make:seeder UserSeeder.

database/seeders/UserSeeder.php
<?php
  
namespace Database\Seeders;
  
use Illuminate\Database\Seeder;
use App\Models\User;
  
class UserSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        User::create([
                "name" => "Anmol Sharma",
                "email" => "anmol@gmail.com",
                "password" => bcrypt("123456")
            ]);
    }
}

This seeder run and create only one row.

Register custom seeders

These custom seeder classes are registered in the DatabaseSeeder.php file because the default db:seed command runs the DatabaseSeeder file only. and you can run all seeders with.

database/seeders/UserSeeder.php

<?php
  
namespace Database\Seeders;
  
use Illuminate\Database\Seeder;
  
class DatabaseSeeder extends Seeder
{
    /**
     * Seed the application's database.
     *
     * @return void
     */
    public function run()
    {
        $this->call([
            UserSeeder::class
            CitySeeder::class
        ]);
    }
}

Run Multiple Seeders

You can run laravel seeder by php artisan db:seed command it run all seeders that register in DatabaseSeeder file.

php artisan db:seed

After running this command all seeder run and data insert in tables by create query which define in seeder files

php laravel developer anmol sharma

Anmol Sharma

I am a software engineer and have experience in web development technologies like php, Laravel, Codeigniter, javascript, jquery, bootstrap and I like to share my deep knowledge by these blogs.

Random tutorial links