addSql('ALTER TABLE season_assignment ADD date_from DATE DEFAULT NULL, ADD date_to DATE DEFAULT NULL, ADD hotel_code VARCHAR(32) DEFAULT NULL'); $this->addSql('UPDATE season_assignment sa JOIN destination d ON d.id = sa.destination_id SET sa.date_from = d.date_from, sa.date_to = d.date_to, sa.hotel_code = CASE WHEN d.hotel_code LIKE \'SER%\' THEN SUBSTRING(d.hotel_code, 4, 3) ELSE SUBSTRING(d.hotel_code, 1, 3) END'); $this->addSql('ALTER TABLE season_assignment CHANGE date_from date_from DATE NOT NULL, CHANGE date_to date_to DATE NOT NULL, CHANGE hotel_code hotel_code VARCHAR(32) NOT NULL'); $this->addSql('ALTER TABLE season_assignment DROP FOREIGN KEY FK_FB891D816C6140'); $this->addSql('DROP INDEX IDX_FB891D816C6140 ON season_assignment'); $this->addSql('ALTER TABLE season_assignment DROP destination_id'); } public function down(Schema $schema): void { $this->addSql('ALTER TABLE season_assignment ADD destination_id INT DEFAULT NULL'); $this->addSql('ALTER TABLE season_assignment ADD CONSTRAINT FK_FB891D816C6140 FOREIGN KEY (destination_id) REFERENCES destination (id)'); $this->addSql('CREATE INDEX IDX_FB891D816C6140 ON season_assignment (destination_id)'); // The destination a placement was cut from cannot be recovered from a period and a house // code, so the relation comes back empty. $this->addSql('ALTER TABLE season_assignment DROP date_from, DROP date_to, DROP hotel_code'); } }