Skip to content

t4web/Migrations

Repository files navigation

Build Status codecov.io Scrutinizer Code Quality

Migrations

Simple Migrations for Zend Framework 2.

Supported Drivers

The following DB adapter drivers are supported by this module.

  • Pdo_Sqlite
  • Pdo_Mysql
  • Mysqli only if you configure the driver options with 'buffer_results' => true

Installation

Using composer

php composer.phar require t4web/migrations

or add to your composer.json

"require": {
  "t4web/migrations": "^2.0.0"
}

Then add T4web\Migrations to the modules array in application.config.php

Configuration

Add to your configuration:

'migrations' => array(
    'dir' => dirname(__FILE__) . '/../../../migrations',
    'namespace' => 'T4web\Migrations',    
    'adapter' => 'Zend\Db\Adapter\Adapter',
    'show_log' => true
),

General options:

The top-level key used to configure this module is migrations.

Migration Configurations: Migrations

Each key under migrations is a migrations configuration.

Sub-key: dir

The path to the directory where migration files are stored. Defaults to ./migrations in the project root dir.

Sub-key: namespace

The class namespace that migration classes will be generated with. Defaults to T4web\Migrations.

Sub-key: show_log (optional)

Flag to log output of the migration. Defaults to true.

Sub-key: adapter (optional)

The service alias that will be used to fetch a Zend\Db\Adapter\Adapter from the service manager.

Usage

Available commands

  • migration version - show last applied migration (name specifies a configured migration)
  • migration list [--all] - list available migrations (all includes applied migrations)
  • migration apply [<version>] [--force] [--down] - apply or rollback migration
  • migration generate - generate migration class

Migration classes are stored in /path/to/project/migrations/ dir by default.

Generic migration class has name Version_<YmdHis> and implement T4web\Migrations\Migration\MigrationInterface.

Migration class example

<?php

namespace T4web\Migrations;

use `T4web\Migrations\Migration\AbstractMigration;

class Version_20130403165433 extends AbstractMigration
{
    public static $description = "Migration description";

    public function up()
    {
        /** @var Zend\Db\ResultSet\ResultSet $result */
        //$result = $this->executeQuery(/*Sql instruction*/);
    }

    public function down()
    {
        //throw new \RuntimeException('No way to go down!');
        //$this->executeQuery(/*Sql instruction*/);
    }
}

Accessing ServiceLocator In Migration Class

<?php

namespace T4web\Migrations;

use T4web\Migrations\Migration\AbstractMigration;

class Version_20130403165433 extends AbstractMigration
{
    public static $description = "Migration description";

    public function up()
    {
         //$this->getServiceLocator()->get(/*Get service by alias*/);

    }

    public function down()
    {
        //$this->getServiceLocator()->get(/*Get service by alias*/);
    }
}