Creating, Migrating, and Resetting Migrations on Laravel Framework
Table of Contents
Overview
Something that I tend do is forget how to crate migrations in the Laravel PHP Framework.
Migrations within Laravel act as version control for your applications database. They can also act as a database agnostic method in which the database schema can be configured.
This is also useful should there be the need to make a small change to a database for a database table.
Migration Generation
Migrations can be built manually. But, there’s actually a better method.
The artisan
command can be used to create the migration file.
Which acts as a scaffold or template for the base for the file.
From this file, the following attributes for the database can be configured.
- Table ID
- Column Names
- Column Datatypes
- Update tables
- Rename tables
- Drop tables
- Configuring foreign keys for tables
- Configure the charset, collation, and engine properties for the tables in MySQL.
Below is the Artisan command for generating a migration for the database.
php artisan make:migration create_migration_table
This will create a new migration file with the date and the
migration name specified. These files will be located in the
relative path database/migrations
in the project directory.
Below is an example of a migration file. This one was plulled from the
Laravel documentation for migrations. This is a migrations file created
for a table named flights
.
Configuring the migration consists of adding the appropriate code to
the up()
and down()
functions.
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('flights', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('airline');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::drop('flights');
}
};
Performing Migrations
This section provides the command for migrating the database.
php artisan migrate
Should there be a need to check the migration status the following command is available.
php artisan migrate:status
Rollback Migrations
To sometimes there’s a need to fix your changes but, resetting the database isn’t an option. To do this, the rollback command can be used.
php artisan migrate:rollback
There are also times where rolling back all of the database migrations is required. The reset command will perform this action.
php artisan migrate:reset
References
Below are references to the sites utilized to assist with creating this article.