migrations/Version20230206161754.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 Version20230206161754 extends AbstractMigration
  7. {
  8.     public function getDescription(): string
  9.     {
  10.         return 'Update Sector model by removing zip code field and adding new related tables';
  11.     }
  12.     public function up(Schema $schema): void
  13.     {
  14.         $this->addSql('CREATE TABLE sector_city (sector_id INT NOT NULL, city_id INT NOT NULL, 
  15.         PRIMARY KEY(sector_id, city_id))');
  16.         $this->addSql('CREATE INDEX IDX_FB357DD5DE95C867 ON sector_city (sector_id)');
  17.         $this->addSql('CREATE INDEX IDX_FB357DD58BAC62AF ON sector_city (city_id)');
  18.         $this->addSql('CREATE TABLE sector_neighborhood (sector_id INT NOT NULL, neighborhood_id INT NOT NULL, 
  19.         PRIMARY KEY(sector_id, neighborhood_id))');
  20.         $this->addSql('CREATE INDEX IDX_9FE08800DE95C867 ON sector_neighborhood (sector_id)');
  21.         $this->addSql('CREATE INDEX IDX_9FE08800803BB24B ON sector_neighborhood (neighborhood_id)');
  22.         $this->addSql('ALTER TABLE sector_city ADD CONSTRAINT FK_FB357DD5DE95C867 FOREIGN KEY (sector_id) 
  23.         REFERENCES sector (id) ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE');
  24.         $this->addSql('ALTER TABLE sector_city ADD CONSTRAINT FK_FB357DD58BAC62AF FOREIGN KEY (city_id) 
  25.         REFERENCES city (id) ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE');
  26.         $this->addSql('ALTER TABLE sector_neighborhood ADD CONSTRAINT FK_9FE08800DE95C867 FOREIGN KEY (sector_id) 
  27.         REFERENCES sector (id) ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE');
  28.         $this->addSql('ALTER TABLE sector_neighborhood ADD CONSTRAINT FK_9FE08800803BB24B FOREIGN KEY 
  29.         (neighborhood_id) REFERENCES neighborhood (id) ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE');
  30.         $this->addSql('ALTER TABLE sector DROP CONSTRAINT fk_4ba3d9e88bac62af');
  31.         $this->addSql('ALTER TABLE sector DROP CONSTRAINT fk_4ba3d9e8803bb24b');
  32.         $this->addSql('DROP INDEX idx_4ba3d9e8803bb24b');
  33.         $this->addSql('DROP INDEX idx_4ba3d9e88bac62af');
  34.         // Migrate data from the sector table to other tables.
  35.         $this->addSql("INSERT INTO sector_city (sector_id, city_id) SELECT id, city_id FROM sector");
  36.         $this->addSql("INSERT INTO sector_neighborhood (sector_id, neighborhood_id) SELECT id, neighborhood_id FROM sector WHERE neighborhood_id IS NOT NULL");
  37.         // Remove some sector fields
  38.         $this->addSql('ALTER TABLE sector DROP city_id');
  39.         $this->addSql('ALTER TABLE sector DROP neighborhood_id');
  40.         $this->addSql('ALTER TABLE sector DROP zip_code');
  41.     }
  42.     public function down(Schema $schema): void
  43.     {
  44.         $this->addSql('DROP TABLE sector_city');
  45.         $this->addSql('DROP TABLE sector_neighborhood');
  46.         $this->addSql('ALTER TABLE sector ADD city_id INT NOT NULL');
  47.         $this->addSql('ALTER TABLE sector ADD neighborhood_id INT DEFAULT NULL');
  48.         $this->addSql('ALTER TABLE sector ADD zip_code VARCHAR(255) DEFAULT NULL');
  49.         $this->addSql('ALTER TABLE sector ADD CONSTRAINT fk_4ba3d9e88bac62af FOREIGN KEY (city_id) 
  50.         REFERENCES city (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
  51.         $this->addSql('ALTER TABLE sector ADD CONSTRAINT fk_4ba3d9e8803bb24b FOREIGN KEY (neighborhood_id) 
  52.         REFERENCES neighborhood (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
  53.         $this->addSql('CREATE INDEX idx_4ba3d9e8803bb24b ON sector (neighborhood_id)');
  54.         $this->addSql('CREATE INDEX idx_4ba3d9e88bac62af ON sector (city_id)');
  55.     }
  56. }