📖 Scenario: You are building a Laravel application that needs a database table to store information about books. You will create a migration to add the books table, run the migration to create the table in the database, and then learn how to roll back the migration if needed.
🎯 Goal: Create a migration file for the books table, run the migration to apply it to the database, and then roll back the migration to remove the table.
📋 What You'll Learn
Create a migration file named create_books_table
Run the migration using the correct Artisan command
Roll back the last migration using the correct Artisan command
💡 Why This Matters
🌍 Real World
Managing database changes safely and efficiently is essential in real-world Laravel projects to keep the database schema in sync with application code.
💼 Career
Understanding migrations and how to run or roll them back is a fundamental skill for Laravel developers working on team projects or maintaining production applications.
Progress0 / 4 steps
1
Create the migration file
Use the Artisan command php artisan make:migration create_books_table to create a migration file named create_books_table.
Laravel
Hint
Open your terminal and type the exact command to create a migration file named create_books_table.
2
Run the migration to create the table
Run the Artisan command php artisan migrate to apply all pending migrations, including the create_books_table migration.
Laravel
Hint
Use the command that applies all migrations to the database.
3
Roll back the last migration
Use the Artisan command php artisan migrate:rollback to undo the last batch of migrations, which will remove the books table.
Laravel
Hint
Use the command that rolls back the last migration batch.
4
Confirm migration rollback
Check the database or use the Artisan command php artisan migrate:status to confirm that the books table migration has been rolled back.
Laravel
Hint
Use the command that shows the status of all migrations to verify rollback.
Practice
(1/5)
1. What does the Laravel command php artisan migrate do?
easy
A. It applies all pending migrations to update the database schema.
B. It deletes all tables from the database.
C. It rolls back the last batch of migrations.
D. It creates a new migration file.
Solution
Step 1: Understand the purpose of migrations
Migrations are used to update the database structure safely by applying changes.
Step 2: Identify the command effect
The command php artisan migrate applies all new migrations that have not been run yet.
Final Answer:
It applies all pending migrations to update the database schema. -> Option A
Quick Check:
Running migrations = apply changes [OK]
Hint: Migrate means apply new changes to the database [OK]
Common Mistakes:
Confusing migrate with rollback
Thinking migrate deletes tables
Assuming migrate creates files
2. Which of the following is the correct command to roll back the last batch of migrations in Laravel?
easy
A. php artisan migrate:run
B. php artisan migrate:reset
C. php artisan migrate:refresh
D. php artisan migrate:rollback
Solution
Step 1: Identify rollback command
The command to undo the last batch of migrations is php artisan migrate:rollback.
Step 2: Differentiate from other commands
migrate:reset rolls back all migrations, migrate:refresh rolls back and re-runs all, and migrate:run is invalid.
Final Answer:
php artisan migrate:rollback -> Option D
Quick Check:
Rollback = undo last batch [OK]
Hint: Rollback undoes last batch, reset undoes all [OK]
Common Mistakes:
Using migrate:reset to rollback last batch
Confusing migrate:refresh with rollback
Typing migrate:run which is invalid
3. Given these commands run in order: php artisan migrate php artisan migrate:rollback What is the state of the database migrations after these commands?
medium
A. All migrations are applied.
B. No migrations are applied.
C. Only the last batch of migrations is undone.
D. Migrations are partially applied and partially undone randomly.
Solution
Step 1: Apply migrations with migrate
The first command applies all pending migrations, updating the database.
Step 2: Rollback last batch
The second command undoes only the last batch of migrations applied, not all.
Final Answer:
Only the last batch of migrations is undone. -> Option C
Quick Check:
Rollback undoes last batch only [OK]
Hint: Rollback only undoes last batch, not all [OK]
Common Mistakes:
Thinking rollback removes all migrations
Assuming rollback does nothing
Believing migrations are randomly undone
4. You run php artisan migrate:rollback but get an error saying "No migrations to rollback." What is the most likely cause?
medium
A. There are no migrations applied yet to rollback.
B. The migration files are missing from the migrations folder.
C. You need to run php artisan migrate:reset first.
D. The database connection is not configured.
Solution
Step 1: Understand rollback error
The error means Laravel found no migrations recorded as applied to undo.
Step 2: Check migration status
If no migrations were run before, rollback cannot undo anything, causing this error.
Final Answer:
There are no migrations applied yet to rollback. -> Option A
Quick Check:
No applied migrations = rollback error [OK]
Hint: Rollback needs applied migrations to undo [OK]
Common Mistakes:
Assuming rollback works without applied migrations
Thinking reset is needed before rollback
Ignoring database connection issues
5. You want to undo all migrations and then re-run them fresh. Which command should you use?
hard
A. php artisan migrate:rollback
B. php artisan migrate:refresh
C. php artisan migrate:reset
D. php artisan migrate:fresh
Solution
Step 1: Understand the commands
migrate:rollback undoes last batch, migrate:reset undoes all, migrate:refresh undoes all then re-runs, migrate:fresh drops all tables and migrates.
Step 2: Choose command for undo and re-run
migrate:refresh is the command that rolls back all migrations and then runs them again fresh.
Final Answer:
php artisan migrate:refresh -> Option B
Quick Check:
Refresh = rollback all + migrate again [OK]
Hint: Refresh rolls back all then migrates again [OK]
Common Mistakes:
Using rollback to undo all migrations
Confusing reset with refresh
Using fresh which drops tables instead of rollback
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.