migrations/Version20241210072621.php line 1

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace DoctrineMigrations;
  4. use Doctrine\DBAL\Schema\Schema;
  5. use Doctrine\Migrations\AbstractMigration;
  6. final class Version20241210072621 extends AbstractMigration
  7. {
  8.     public function getDescription(): string
  9.     {
  10.         return 'Remove the postal code relation from address and replace it with string attributes. Migrate existing data to the new structure.';
  11.     }
  12.     public function up(Schema $schema): void
  13.     {
  14.         $this->addSql('ALTER TABLE billing_address ADD postal_code VARCHAR(255) DEFAULT NULL, ADD city VARCHAR(255) DEFAULT NULL, ADD country VARCHAR(255) DEFAULT NULL');
  15.         $this->addSql('ALTER TABLE delivery_address ADD postal_code VARCHAR(255) DEFAULT NULL, ADD city VARCHAR(255) DEFAULT NULL, ADD country VARCHAR(255) DEFAULT NULL');
  16.         $this->addSql('
  17.             UPDATE billing_address ba
  18.             LEFT JOIN postal_code pc ON ba.postal_code_id = pc.id
  19.             LEFT JOIN city c ON pc.city_id = c.id
  20.             LEFT JOIN country co ON c.country_id = co.id
  21.             SET ba.postal_code = pc.code, ba.city = c.name, ba.country = co.name
  22.         ');
  23.         $this->addSql('
  24.             UPDATE delivery_address da
  25.             LEFT JOIN postal_code pc ON da.postal_code_id = pc.id
  26.             LEFT JOIN city c ON pc.city_id = c.id
  27.             LEFT JOIN country co ON c.country_id = co.id
  28.             SET da.postal_code = pc.code, da.city = c.name, da.country = co.name
  29.         ');
  30.         $this->addSql('ALTER TABLE billing_address DROP FOREIGN KEY FK_6660E456BDBA6A61');
  31.         $this->addSql('DROP INDEX IDX_6660E456BDBA6A61 ON billing_address');
  32.         $this->addSql('ALTER TABLE billing_address DROP postal_code_id');
  33.         $this->addSql('ALTER TABLE delivery_address DROP FOREIGN KEY FK_750D05FBDBA6A61');
  34.         $this->addSql('DROP INDEX IDX_750D05FBDBA6A61 ON delivery_address');
  35.         $this->addSql('ALTER TABLE delivery_address DROP postal_code_id');
  36.     }
  37.     public function down(Schema $schema): void
  38.     {
  39.         $this->addSql('ALTER TABLE billing_address ADD postal_code_id INT DEFAULT NULL');
  40.         $this->addSql('ALTER TABLE billing_address ADD CONSTRAINT FK_6660E456BDBA6A61 FOREIGN KEY (postal_code_id) REFERENCES postal_code (id)');
  41.         $this->addSql('CREATE INDEX IDX_6660E456BDBA6A61 ON billing_address (postal_code_id)');
  42.         $this->addSql('ALTER TABLE delivery_address ADD postal_code_id INT DEFAULT NULL');
  43.         $this->addSql('ALTER TABLE delivery_address ADD CONSTRAINT FK_750D05FBDBA6A61 FOREIGN KEY (postal_code_id) REFERENCES postal_code (id)');
  44.         $this->addSql('CREATE INDEX IDX_750D05FBDBA6A61 ON delivery_address (postal_code_id)');
  45.         $this->addSql('ALTER TABLE billing_address DROP postal_code, DROP city, DROP country');
  46.         $this->addSql('ALTER TABLE delivery_address DROP postal_code, DROP city, DROP country');
  47.     }
  48. }