debemos bajarnos el bundle de doctrinemigrations
composer require doctrine/doctrine-migrations-bundle
y agregarlo al appkernel
new Doctrine\Bundle\MigrationsBundle\DoctrineMigrationsBundle(),
workflow de migracion:
el objetivo va a ser encontrar un modod seguro actualizar nuestro esquema de base de datos tanto localmente como en produccion
1)
php bin/console doctrine:database:drop --force
2)
php bin/console doctrine:database:create
3)
vamos ahora a crear nuestro primer archivo de migracion
php bin/console doctrine:migrations:diff
esto generar un archivo en app/DoctrineMigrations/Version2017041603503.php
namespace Application\Migrations;
use Doctrine\DBAL\Migrations\AbstractMigration;
use Doctrine\DBAL\Schema\Schema;
/**
* Auto-generated Migration: Please modify to your needs!
*/
class Version20170416035038 extends AbstractMigration
{
/**
* @param Schema $schema
*/
public function up(Schema $schema)
{
// this up() migration is auto-generated, please modify it to your needs
$this->abortIf($this->connection->getDatabasePlatform()->getName() !== 'mysql', 'Migration can only be executed safely on \'mysql\'.');
$this->addSql('CREATE TABLE genero (id INT AUTO_INCREMENT NOT NULL, name VARCHAR(255) NOT NULL, sub_family VARCHAR(255) NOT NULL, species_count INT NOT NULL, fun_fact VARCHAR(255) NOT NULL, PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE = InnoDB');
}
/**
* @param Schema $schema
*/
public function down(Schema $schema)
{
// this down() migration is auto-generated, please modify it to your needs
$this->abortIf($this->connection->getDatabasePlatform()->getName() !== 'mysql', 'Migration can only be executed safely on \'mysql\'.');
$this->addSql('DROP TABLE genero');
}
}
4)
ejecutar
php bin/console doctrine:migrations:migrate
lo que hara que se ejecuten todos los archivos de migracion que no se hayan ejecutado antes
5)
cada vez que hagamos algun cambio en nuestros modelos, debemos crear un archivo de migracion nuevo.
por ejemplo imaginemos que queremos hacer que un campo acepte nulos
/**
* @ORM\Column(type="string", nullable=true)
*/
private $funFact;
luego tenemos que volver a ejecutar el comando
php bin/console doctrine:migrations:diff
y volver a ejecutar la migracion
php bin/console doctrine:migrations:migrate
No hay comentarios:
Publicar un comentario