What is the purpose of database seeding in Laravel?
Database seeding in Laravel is used to fill the database with sample or initial data automatically. This helps developers test and develop applications with meaningful data.
Click to reveal answer
beginner
How do you create a new seeder class in Laravel?
You create a new seeder class by running the artisan command: <code>php artisan make:seeder SeederName</code>. This generates a file where you define the data to insert.
Click to reveal answer
beginner
Where do you write the data insertion logic in a Laravel seeder?
You write the data insertion logic inside the run() method of the seeder class. This method is called when the seeder runs.
Click to reveal answer
beginner
How do you run all seeders to populate the database?
Run the command php artisan db:seed to execute all seeders registered in DatabaseSeeder. This fills the database with the defined data.
Click to reveal answer
intermediate
What is the role of the <code>DatabaseSeeder</code> class in Laravel?
The <code>DatabaseSeeder</code> class acts as the main seeder that calls other seeders. You register your individual seeders here to run them all together.
Click to reveal answer
Which artisan command creates a new seeder class?
Aphp artisan db:seed SeederName
Bphp artisan create:seeder SeederName
Cphp artisan seed:create SeederName
Dphp artisan make:seeder SeederName
✗ Incorrect
The correct command to create a seeder is php artisan make:seeder SeederName.
Where do you define the data to insert in a Laravel seeder?
AInside the <code>run()</code> method of the seeder class
BIn the <code>boot()</code> method of the seeder class
CIn the <code>handle()</code> method of the seeder class
DIn the <code>config/database.php</code> file
✗ Incorrect
Data insertion logic goes inside the run() method of the seeder class.
What command runs all seeders registered in DatabaseSeeder?
Aphp artisan migrate
Bphp artisan db:seed
Cphp artisan seed:run
Dphp artisan make:seed
✗ Incorrect
The command php artisan db:seed runs all seeders registered in DatabaseSeeder.
How do you call another seeder from inside DatabaseSeeder?
AcallSeeder('OtherSeeder');
BOtherSeeder::run();
C$this->call(OtherSeeder::class);
DrunSeeder('OtherSeeder');
✗ Incorrect
You call other seeders using $this->call(OtherSeeder::class); inside DatabaseSeeder.
Why is seeding useful during development?
AIt provides sample data to test features easily
BIt deletes all data from the database
CIt optimizes database queries
DIt creates database tables automatically
✗ Incorrect
Seeding helps by providing sample data so developers can test and build features without manual data entry.
Explain the steps to create and run a seeder in Laravel.
Think about how you prepare and then run the seeder.
You got /4 concepts.
Describe the role of the DatabaseSeeder class in Laravel seeding.
It is like the manager of all seeders.
You got /4 concepts.
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
Step 1: Understand the role of seeders
Seeders are designed to insert data into the database automatically for testing or initial setup.
Step 2: Differentiate from other Laravel features
Creating tables is done by migrations, authentication by middleware, and routes by route files, not seeders.
Final Answer:
To fill the database with sample or default data automatically -> Option A
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
Step 1: Recall Laravel artisan commands for seeders
The correct command to create a seeder is php artisan make:seeder SeederName.
Step 2: Identify incorrect command formats
Other options use wrong verbs like create, seed:create, or generate which are not valid artisan commands.
Final Answer:
php artisan make:seeder SeederName -> Option A
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
Step 1: Understand DB insert with array of arrays
Passing an array of arrays to insert adds multiple records at once.
Step 2: Confirm no truncation or errors in code
The code inserts two users without deleting existing data, and the syntax is correct.
Final Answer:
Two new users named Alice and Bob will be added to the users table -> Option D
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
Step 1: Check insert method parameter format
The insert method expects one array argument. Passing two separate arrays causes a syntax error.
Step 2: Identify correct way to insert multiple rows
Multiple rows should be inside a single array: an array of arrays.
Final Answer:
The insert method expects a single array, but two arrays are passed separately -> Option C
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
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.
Step 2: Identify incorrect factory usages
User::create()->factory()->count(100); reverses method order, A uses old syntax, and D misses count method.
Final Answer:
User::factory()->count(100)->create(); -> Option B
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 unknownstrongwhile earning +1 Grip toward your certificate.