1. Go to this page and download the library: Download okvpn/migration-bundle library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
okvpn / migration-bundle example snippets
// src/Migrations/Schema/v1_5
namespace App\Migrations\Schema\v1_5;
use Doctrine\DBAL\Schema\Schema;
use Okvpn\Bundle\MigrationBundle\Migration\Migration;
use Okvpn\Bundle\MigrationBundle\Migration\QueryBag;
class AppMigration implements Migration
{
/**
* {@inheritdoc}
*/
public function getMigrationVersion()
{
return 'v1_5';
}
/**
* {@inheritdoc}
*/
public function up(Schema $schema, QueryBag $queries)
{
$table = $schema->createTable('meteo');
$table->addColumn('id', 'integer', ['autoincrement' => true]);
$table->addColumn('timestamp', 'datetime');
$table->addColumn('temp', 'decimal', ['precision' => 4, 'scale' => 2]);
$table->addColumn('pressure', 'decimal', ['precision' => 6, 'scale' => 2]);
$table->addColumn('humidity', 'decimal', ['precision' => 4, 'scale' => 2]);
$table->setPrimaryKey(['id']);
$table->addIndex(['timestamp']);
}
}
use Symfony\Component\HttpKernel\Kernel;
class AppKernel extends Kernel
{
public function registerBundles()
{
$bundles = [
new Okvpn\Bundle\MigrationBundle\OkvpnMigrationBundle(),
//...
];
}
}
php
namespace Acme\Bundle\TestBundle\Migrations\Schema\v1_0;
use Doctrine\DBAL\Schema\Schema;
use Okvpn\Bundle\MigrationBundle\Migration\Migration;
use Okvpn\Bundle\MigrationBundle\Migration\QueryBag;
use Okvpn\Bundle\MigrationBundle\Migration\Extension\RenameExtension;
use Okvpn\Bundle\MigrationBundle\Migration\Extension\RenameExtensionAwareInterface;
class AcmeTestBundle implements Migration, RenameExtensionAwareInterface
{
/**
* @var RenameExtension
*/
protected $renameExtension;
/**
* @inheritdoc
*/
public function setRenameExtension(RenameExtension $renameExtension)
{
$this->renameExtension = $renameExtension;
}
/**
* @inheritdoc
*/
public function up(Schema $schema, QueryBag $queries)
{
$table = $schema->createTable('test_table');
$table->addColumn('id', 'integer', ['autoincrement' => true]);
$table->addColumn('created', 'datetime', []);
$table->addColumn('field', 'string', ['length' => 500]);
$table->addColumn('another_field', 'string', ['length' => 255]);
$table->setPrimaryKey(['id']);
$this->renameExtension->renameTable(
$schema,
$queries,
'old_table_name',
'new_table_name'
);
$queries->addQuery(
"ALTER TABLE another_table ADD COLUMN test_column INT NOT NULL",
);
}
}
php
namespace Acme\Bundle\TestBundle\Migrations\Schema;
use Doctrine\DBAL\Schema\Schema;
use Okvpn\Bundle\MigrationBundle\Migration\Installation;
use Okvpn\Bundle\MigrationBundle\Migration\QueryBag;
class AcmeTestBundleInstaller implements Installation
{
/**
* @inheritdoc
*/
public function getMigrationVersion()
{
return 'v1_1';
}
/**
* @inheritdoc
*/
public function up(Schema $schema, QueryBag $queries)
{
$table = $schema->createTable('test_installation_table');
$table->addColumn('id', 'integer', ['autoincrement' => true]);
$table->addColumn('field', 'string', ['length' => 500]);
$table->setPrimaryKey(['id']);
}
}
php
namespace Acme\Bundle\TestBundle\Migrations\Schema\v1_0;
use Doctrine\DBAL\Schema\Schema;
use Okvpn\Bundle\MigrationBundle\Migration\Migration;
use Okvpn\Bundle\MigrationBundle\Migration\QueryBag;
use Okvpn\Bundle\MigrationBundle\Migration\Extension\RenameExtension;
use Okvpn\Bundle\MigrationBundle\Migration\Extension\RenameExtensionAwareInterface;
class AcmeTestBundle implements Migration, RenameExtensionAwareInterface
{
/**
* @var RenameExtension
*/
protected $renameExtension;
/**
* @inheritdoc
*/
public function setRenameExtension(RenameExtension $renameExtension)
{
$this->renameExtension = $renameExtension;
}
/**
* @inheritdoc
*/
public function up(Schema $schema, QueryBag $queries)
{
$this->renameExtension->renameTable(
$schema,
$queries,
'old_table_name',
'new_table_name'
);
}
}
php
namespace Acme\Bundle\TestBundle\Migration\Extension;
use Doctrine\DBAL\Schema\Schema;
use Okvpn\Bundle\MigrationBundle\Migration\QueryBag;
class MyExtension
{
public function doSomething(Schema $schema, QueryBag $queries, /* other parameters, for example */ $tableName)
{
$table = $schema->getTable($tableName); // highly recommended to make sure that a table exists
$query = 'SOME SQL'; /* or $query = new SqlMigrationQuery('SOME SQL'); */
$queries->addQuery($query);
}
}
php
namespace Acme\Bundle\TestBundle\Migration\Extension;
/**
* MyExtensionAwareInterface should be implemented by migrations that depends on a MyExtension.
*/
interface MyExtensionAwareInterface
{
/**
* Sets the MyExtension
*
* @param MyExtension $myExtension
*/
public function setMyExtension(MyExtension $myExtension);
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.