migrations/Version20260430120000.php line 1
<?phpdeclare(strict_types=1);namespace DoctrineMigrations;use Doctrine\DBAL\Schema\Schema;use Doctrine\Migrations\AbstractMigration;final class Version20260430120000 extends AbstractMigration{public function getDescription(): string{return 'Replace single event manager with multiple manager assignments';}public function up(Schema $schema): void{$this->abortIf(!$this->connection->getDatabasePlatform() instanceof \Doctrine\DBAL\Platforms\MySQL57Platform,"Migration can only be executed safely on '\\Doctrine\\DBAL\\Platforms\\MySQL57Platform'.");$this->addSql('CREATE TABLE events_manager_user (events_id INT NOT NULL,user_id INT NOT NULL,INDEX IDX_EVENTS_MANAGER_USER_EVENT (events_id),INDEX IDX_EVENTS_MANAGER_USER_USER (user_id),PRIMARY KEY(events_id, user_id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB');$this->addSql('ALTER TABLE events_manager_user ADD CONSTRAINT FK_EVENTS_MANAGER_USER_EVENT FOREIGN KEY (events_id) REFERENCES events (id) ON DELETE CASCADE');$this->addSql('ALTER TABLE events_manager_user ADD CONSTRAINT FK_EVENTS_MANAGER_USER_USER FOREIGN KEY (user_id) REFERENCES user (id) ON DELETE CASCADE');$this->addSql('INSERT INTO events_manager_user (events_id, user_id)SELECT id, manager_user_idFROM eventsWHERE manager_user_id IS NOT NULL');$this->addSql("SET @event_manager_fk := (SELECT CONSTRAINT_NAMEFROM information_schema.KEY_COLUMN_USAGEWHERE TABLE_SCHEMA = DATABASE()AND TABLE_NAME = 'events'AND COLUMN_NAME = 'manager_user_id'AND REFERENCED_TABLE_NAME = 'user'LIMIT 1)");$this->addSql("SET @event_manager_fk_sql := IF(@event_manager_fk IS NOT NULL,CONCAT('ALTER TABLE events DROP FOREIGN KEY `', @event_manager_fk, '`'),'SELECT 1')");$this->addSql('PREPARE event_manager_fk_stmt FROM @event_manager_fk_sql');$this->addSql('EXECUTE event_manager_fk_stmt');$this->addSql('DEALLOCATE PREPARE event_manager_fk_stmt');$this->addSql('ALTER TABLE events DROP COLUMN manager_user_id');}public function down(Schema $schema): void{$this->abortIf(!$this->connection->getDatabasePlatform() instanceof \Doctrine\DBAL\Platforms\MySQL57Platform,"Migration can only be executed safely on '\\Doctrine\\DBAL\\Platforms\\MySQL57Platform'.");$this->addSql('ALTER TABLE events ADD manager_user_id INT DEFAULT NULL');$this->addSql('UPDATE events eSET manager_user_id = (SELECT MIN(emu.user_id)FROM events_manager_user emuWHERE emu.events_id = e.id)');$this->addSql('ALTER TABLE events ADD INDEX IDX_5387574A19A3E683 (manager_user_id)');$this->addSql('ALTER TABLE events ADD CONSTRAINT FK_5387574A19A3E683 FOREIGN KEY (manager_user_id) REFERENCES user (id)');$this->addSql('ALTER TABLE events_manager_user DROP FOREIGN KEY FK_EVENTS_MANAGER_USER_EVENT');$this->addSql('ALTER TABLE events_manager_user DROP FOREIGN KEY FK_EVENTS_MANAGER_USER_USER');$this->addSql('DROP TABLE events_manager_user');}}