fyre/migration

A database migration library.

v6.0.1 2025-04-02 12:19 UTC

README

FyreMigration is a free, open-source migration library for PHP.

Table Of Contents

Installation

Using Composer

composer require fyre/migration

In PHP:

use Fyre\Migration\MigrationRunner;

Basic Usage

$runner = new MigrationRunner($container, $loader, $connectionManager, $forgeRegistry);

Autoloading

It is recommended to bind the MigrationRunner to the Container as a singleton.

$container->singleton(MigrationRunner::class);

Any dependencies will be injected automatically when loading from the Container.

$runner = $container->use(MigrationRunner::class);

Methods

Add Namespace

Add a namespace for loading migrations.

  • $namespace is a string representing the namespace.
$runner->addNamespace($namespace);

Clear

Clear all namespaces and migrations.

$runner->clear();

Get Connection

Get the Connection.

$connection = $runner->getConnection();

Get Forge

Get the Forge.

$forge = $runner->getForge();

Get History

Get the MigrationHistory.

$history = $runner->getHistory();

Get Migrations

Get all migrations.

$migrations = $runner->getMigrations();

Get Namespaces

Get the namespaces.

$namespaces = $runner->getNamespaces();

Has Namespace

Determine whether a namespace exists.

  • $namespace is a string representing the namespace.
$hasNamespace = $php->hasNamespace($namespace);

Migrate

Migrate to the latest version.

$runner->migrate($latestVersion);

Rollback

Rollback to a previous version.

  • $batches is a number representing the number of batches to rollback, and will default to 1.
  • $steps is a number representing the number of steps to rollback, and will default to null.
$runner->rollback($batches, $steps);

Set Connection

Set the Connection.

$runner->setConnection($connection);

Remove Namespace

Remove a namespace.

  • $namespace is a string representing the namespace.
$runner->removeNamespace($namespace);

Migrations

Migrations can be created by extending the \Fyre\Migration\Migration class, prefixing the class name with "Migration_".

To allow discovery of the migration, add the the namespace to the MigrationRunner.

Down

Perform a "down" migration.

$migration->down();

Up

Perform an "up" migration.

$migration->up();

Migration Histories

Add

Add a migration version to the history.

  • $name is a string representing the migration name.
  • $batch is a number representing the batch number.
$history->add($name, $batch);

All

Get the migration history.

$all = $history->all();

Delete

Delete a migration from the history.

  • $name is a string representing the migration name.
$history->delete($name);

Get Next Batch

Get the next batch number.

$batch = $history->getNextBatchNumber();

Commands

Migrate

Perform database migrations.

  • --db is the ConnectionManager config key, and will default to ConnectionManager::DEFAULT.
$commandRunner->run('db:migrate', ['--db', 'default']);

Rollback

Perform database rollbacks.

  • --db is the ConnectionManager config key, and will default to ConnectionManager::DEFAULT.
  • --batches is the number of batches to rollback, and will default to 1.
  • --steps is the number of steps to rollback, and will default to null.
$commandRunner->run('db:rollback', ['--db', 'default', '--batches', '1', '--steps', 1]);