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