addSql('CREATE TABLE encounter (id INT AUTO_INCREMENT NOT NULL, name VARCHAR(120) NOT NULL, created_at DATETIME NOT NULL, updated_at DATETIME NOT NULL, PRIMARY KEY (id)) DEFAULT CHARACTER SET utf8mb4 ENGINE = InnoDB'); // add nullable first, rehome any pre-existing combatants, then enforce $this->addSql('ALTER TABLE combatant ADD encounter_id INT DEFAULT NULL'); $this->addSql("INSERT INTO encounter (name, created_at, updated_at) SELECT 'Combat', NOW(), NOW() FROM DUAL WHERE EXISTS (SELECT 1 FROM combatant WHERE encounter_id IS NULL)"); $this->addSql('UPDATE combatant SET encounter_id = (SELECT MAX(id) FROM encounter) WHERE encounter_id IS NULL'); $this->addSql('ALTER TABLE combatant ADD CONSTRAINT FK_807DA381D6E2FADC FOREIGN KEY (encounter_id) REFERENCES encounter (id) ON DELETE CASCADE'); $this->addSql('CREATE INDEX IDX_807DA381D6E2FADC ON combatant (encounter_id)'); $this->addSql('ALTER TABLE combatant CHANGE encounter_id encounter_id INT NOT NULL'); } public function down(Schema $schema): void { $this->addSql('ALTER TABLE combatant DROP FOREIGN KEY FK_807DA381D6E2FADC'); $this->addSql('DROP INDEX IDX_807DA381D6E2FADC ON combatant'); $this->addSql('ALTER TABLE combatant DROP encounter_id'); $this->addSql('DROP TABLE encounter'); } }