smartteam/migrations-bundle

Mantainance project of old ZenstruckMigrationsBundle

v2.2.0 2018-01-18 05:38 UTC

This package is not auto-updated.

Last update: 2025-06-22 09:26:16 UTC


README

Mantainance project of old ZenstruckMigrationsBundle that enabled container aware migrations.

NOTE: For use with Symfony 2.0 use the 1.x branch

Installation

  1. Add to composer.json (see http://getcomposer.org/)

    "require" :  {
        "smartteam/migrations-bundle": "*",
    }
  2. Register the bundle

    <?php
    // app/AppKernel.php
    
    public function registerBundles()
    {
        $bundles = array(
            // ...
            new SmartTeam\Bundle\MigrationsBundle\SmartTeamMigrationsBundle(),
        );
        // ...
    )

Usage

  • To make use of container aware data migrations your migrations must extend SmartTeam\Bundle\MigrationsBundle\Migrations\AbstractMigration. (note: Migrations that extend Doctrine\DBAL\Migrations\AbstractMigration will still run normally)
  • Implement the dataUp() method and add your custom migration logic. (note: The up() method will be run before dataUp)
  • Implement the dataDown() method and add your custom migration logic. (note: The down() method will be run before dataDown)
  • Optionally implement the getDataDescription method and return a description of the migration.
  • Migrate using the smartteam:migrations:migrate command. (note: make sure you run migrations with this command and not doctrine:migrations:migrate

Migration Template

<?php

namespace Application\Migrations;

use SmartTeam\Bundle\MigrationsBundle\Migrations\AbstractMigration;
use Doctrine\DBAL\Schema\Schema;
use Symfony\Component\DependencyInjection\ContainerInterface;

/**
 * Auto-generated Migration: Please modify to your need!
 */
class Version20120419113825 extends AbstractMigration
{
    public function up(Schema $schema)
    {
        // this up() migration is autogenerated, please modify it to your needs
        $this->abortIf($this->connection->getDatabasePlatform()->getName() != "mysql");

    }

    public function down(Schema $schema)
    {
        // this down() migration is autogenerated, please modify it to your needs
        $this->abortIf($this->connection->getDatabasePlatform()->getName() != "mysql");

    }
    
    public function dataUp(ContainerInterface $container)
    {
        // container aware logic
    }
    
    public function dataDown(ContainerInterface $container)
    {
        // container aware logic
    }

    /**
     * OPTIONAL
     */
    public function getDataDescription()
    {
        return parent::getDataDescription();
    }
}