Ralph J. Smit Laravel Software Engineer
Building Laravel database migrations that are good right away is hard – especially for beginners. That’s why you’d often want to make a change to your migration, only to discover that you’ve already migrated your database. Luckily, it’s very easy in Laravel to correctly rollback only your last database migration(s).
First, let’s just check which database migrations we’ve already run. To do so, run the command php artisan migration:status on the command line (make sure to navigate to the directory with your application files first). This would give you an output like this:
php artisan migrate:status+------+------------------------------------------------+-------+| Ran? | Migration | Batch |+------+------------------------------------------------+-------+| Yes | 2014_10_12_000000_create_users_table | 1 || Yes | 2014_10_12_100000_create_password_resets_table | 1 || Yes | 2019_08_19_000000_create_failed_jobs_table | 1 |+------+------------------------------------------------+-------+
My `php artisan migrate` gives a fatal error
Sometimes this happens, and in most cases it can be solved by running sudo composer dump-autoload
before doing your migration. Also, check out the part about this command below.
How to rollback your latest Laravel database migration
In order to rollback the latest migration, you need the following command:
php artisan migrate:rollback --step=1
The command itself is very simple, but let me just explain it shortly:
- The
php artisan
command specifies that you want to use Laravel's built-in command line tool, called Artisan. This tool allows you to run commands specifically for your Laravel application. Most likely you've encountered this already before. - The part with
migrate:rollback
is the actual command. It says that you want to rollback certain database migrations. - The last part,
--step=1
, is a parameter for themigrate:rollback
command. By default,php artisan migrate:rollback
will rollback all of your database migrations. By specifying--step=1
, you're saying that you only want to rollback the latest database migration.
Plus, if you change the number, e.g. into--step=2
, you're telling Laravel to only rollback the last two migrations.
Cleaning up after rolling back a database migration
After rolling back a database migration, it's good practice to run the following command:
composer dump-autoload
This command cleans up your composer autoload file, possibly preventing errors and problems in the future.
Published by Ralph J. Smit on in Laravel . Last updated on 10 March 2022 .