Migrations
Contents
The Basics
Think of migrations as a type of version control for your database. Let's say your working on a team, and you all have local databases for development. Good ole' Eric makes a change to the database and checks in his code that uses the new column. You pull in the code, and your application breaks because you don't have the new column. What do you do? Migrations are the answer. Let's dig in deeper to find out how to use them!
Prepping Your Database
Before you can run migrations, we need to do some work on your database. Laravel uses a special table to keep track of which migrations have already run. To create this table, just use the Artisan command-line:
Creating the Laravel migrations table:
php artisan migrate:install
Creating Migrations
You can easily create migrations through Laravel's "Artisan" CLI. It looks like this:
Creating a migration
php artisan migrate:make create_users_table
Now, check your application/migrations folder. You should see your brand new migration! Notice that it also contains a timestamp. This allows Laravel to run your migrations in the correct order.
You may also create migrations for a bundle.
Creating a migration for a bundle:
php artisan migrate:make bundle::create_users_table
Further Reading:
Running Migrations
Running all outstanding migrations in application and bundles:
php artisan migrate
Running all outstanding migrations in the application:
php artisan migrate application
Running all outstanding migrations in a bundle:
php artisan migrate bundle
Rolling Back
When you roll back a migration, Laravel rolls back the entire migration "operation". So, if the last migration command ran 122 migrations, all 122 migrations would be rolled back.
Rolling back the last migration operation:
php artisan migrate:rollback
Roll back all migrations that have ever run:
php artisan migrate:reset
Roll back everything and run all migrations again:
php artisan migrate:rebuild