Bird
Raised Fist0
Laravelframework~10 mins

Seeding data in Laravel - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Seeding data
Create Seeder Class
↓
Define run() Method
↓
Write Data Insert Logic
↓
Run Seeder via Artisan
↓
Data Inserted into Database
↓
Verify Data in DB
This flow shows how Laravel seeds data: create a seeder class, write data insertion code, run it, and verify data in the database.
Execution Sample
Laravel
php artisan make:seeder UserSeeder

// In UserSeeder.php
public function run() {
  DB::table('users')->insert(['name' => 'Alice']);
}

php artisan db:seed --class=UserSeeder
This code creates a seeder, inserts a user named Alice, and runs the seeder to add data to the database.
Execution Table
StepActionCode/CommandEffectDatabase State
1Create seeder classphp artisan make:seeder UserSeederUserSeeder.php file createdNo new data
2Write run() methodDB::table('users')->insert(['name' => 'Alice']);Insert command readyNo new data
3Run seederphp artisan db:seed --class=UserSeederSeeder executedUser 'Alice' added
4Verify dataCheck users tableData presentUsers table has Alice
5ExitNo further commandsSeeding completeFinal DB state with Alice
💡 Seeder run completes, data inserted into users table.
Variable Tracker
VariableStartAfter Step 2After Step 3Final
users tableemptyempty[{"name": "Alice"}][{"name": "Alice"}]
Key Moments - 2 Insights
Why does running 'php artisan make:seeder UserSeeder' not insert data immediately?
Creating the seeder class only generates the file; data insertion happens only when you run the seeder with 'php artisan db:seed --class=UserSeeder' as shown in step 3.
What happens if you run the seeder multiple times without clearing the database?
Each run inserts the same data again, causing duplicates. This is because the insert command adds new rows every time, as seen in step 3.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what is the database state after step 2?
AUsers table contains Alice
BUsers table is empty
CUsers table contains multiple users
DUsers table is deleted
💡 Hint
Check the 'Database State' column for step 2 in the execution table.
At which step does the actual data get inserted into the database?
AStep 1
BStep 2
CStep 3
DStep 4
💡 Hint
Look for the step where 'Seeder executed' and 'User Alice added' appear in the execution table.
If you run the seeder twice without clearing the database, what will happen?
AData will be duplicated
BNo change after first insert
CDatabase will be cleared automatically
DSeeder will fail to run
💡 Hint
Refer to the key moment about running the seeder multiple times causing duplicates.
Concept Snapshot
Laravel Seeding Data:
1. Create seeder: php artisan make:seeder NameSeeder
2. Define run() with DB insert logic
3. Run seeder: php artisan db:seed --class=NameSeeder
4. Data inserts into DB
5. Repeat runs add duplicates unless cleared
Full Transcript
Seeding data in Laravel involves creating a seeder class using artisan, writing the data insertion logic inside the run method, running the seeder to insert data into the database, and verifying the data is present. The process starts with generating the seeder file, then adding insert commands, and finally executing the seeder command. Running the seeder multiple times without clearing the database will add duplicate entries. This visual trace shows each step and how the database state changes from empty to containing the seeded data.

Practice

(1/5)
1. What is the main purpose of a seeder in Laravel?
easy
A. To fill the database with sample or default data automatically
B. To create database tables and columns
C. To handle user authentication
D. To manage application routes

Solution

  1. Step 1: Understand the role of seeders

    Seeders are designed to insert data into the database automatically for testing or initial setup.
  2. Step 2: Differentiate from other Laravel features

    Creating tables is done by migrations, authentication by middleware, and routes by route files, not seeders.
  3. Final Answer:

    To fill the database with sample or default data automatically -> Option A
  4. Quick Check:

    Seeder purpose = fill database with data [OK]
Hint: Seeders add data, migrations create tables [OK]
Common Mistakes:
  • Confusing seeders with migrations
  • Thinking seeders manage routes
  • Assuming seeders handle authentication
2. Which command creates a new seeder class in Laravel?
easy
A. php artisan make:seeder SeederName
B. php artisan create:seeder SeederName
C. php artisan seed:create SeederName
D. php artisan generate:seeder SeederName

Solution

  1. Step 1: Recall Laravel artisan commands for seeders

    The correct command to create a seeder is php artisan make:seeder SeederName.
  2. Step 2: Identify incorrect command formats

    Other options use wrong verbs like create, seed:create, or generate which are not valid artisan commands.
  3. Final Answer:

    php artisan make:seeder SeederName -> Option A
  4. Quick Check:

    Seeder creation command = make:seeder [OK]
Hint: Use 'make:seeder' to create seeders [OK]
Common Mistakes:
  • Using 'create:seeder' instead of 'make:seeder'
  • Confusing seeder creation with migration creation
  • Typing artisan commands with wrong verbs
3. Given this seeder code snippet, what will be the result after running php artisan db:seed --class=UserSeeder?
public function run() {
  DB::table('users')->insert([
    ['name' => 'Alice', 'email' => 'alice@example.com'],
    ['name' => 'Bob', 'email' => 'bob@example.com']
  ]);
}
medium
A. Only one user will be added because insert accepts one record at a time
B. The users table will be emptied before adding Alice and Bob
C. An error will occur because the insert method requires a single array
D. Two new users named Alice and Bob will be added to the users table

Solution

  1. Step 1: Understand DB insert with array of arrays

    Passing an array of arrays to insert adds multiple records at once.
  2. Step 2: Confirm no truncation or errors in code

    The code inserts two users without deleting existing data, and the syntax is correct.
  3. Final Answer:

    Two new users named Alice and Bob will be added to the users table -> Option D
  4. Quick Check:

    Insert multiple records = array of arrays [OK]
Hint: Insert accepts array of arrays for multiple rows [OK]
Common Mistakes:
  • Assuming insert deletes existing data
  • Thinking insert only accepts one record
  • Expecting an error from multiple inserts
4. What is wrong with this seeder code?
public function run() {
  DB::table('products')->insert(
    ['name' => 'Book', 'price' => 10],
    ['name' => 'Pen', 'price' => 2]
  );
}
medium
A. The run method must return a value
B. The table name 'products' is invalid and causes an error
C. The insert method expects a single array, but two arrays are passed separately
D. The price values must be strings, not integers

Solution

  1. Step 1: Check insert method parameter format

    The insert method expects one array argument. Passing two separate arrays causes a syntax error.
  2. Step 2: Identify correct way to insert multiple rows

    Multiple rows should be inside a single array: an array of arrays.
  3. Final Answer:

    The insert method expects a single array, but two arrays are passed separately -> Option C
  4. Quick Check:

    Insert needs one array argument [OK]
Hint: Wrap multiple records in one array for insert [OK]
Common Mistakes:
  • Passing multiple arrays as separate arguments
  • Thinking run method must return a value
  • Assuming numeric values must be strings
5. You want to seed your database with 100 users having random names and emails using Laravel factories inside a seeder. Which code snippet correctly achieves this inside the run method?
hard
A. factory(User::class, 100)->make();
B. User::factory()->count(100)->create();
C. User::create()->factory()->count(100);
D. User::factory(100)->make();

Solution

  1. Step 1: Recall Laravel factory syntax for creating multiple records

    The correct syntax is User::factory()->count(100)->create(); to generate and save 100 users.
  2. Step 2: Identify incorrect factory usages

    User::create()->factory()->count(100); reverses method order, A uses old syntax, and D misses count method.
  3. Final Answer:

    User::factory()->count(100)->create(); -> Option B
  4. Quick Check:

    Factory count then create = correct [OK]
Hint: Use factory()->count(n)->create() to seed multiple records [OK]
Common Mistakes:
  • Using old factory syntax
  • Calling factory on create() result
  • Omitting count() method for multiple records
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard