connection->fetchAllAssociative(<<<'SQL' SELECT source, medical_system_code, COUNT(*) c FROM doctors WHERE medical_system_code IS NOT NULL AND medical_system_code <> '' GROUP BY source, medical_system_code HAVING c > 1 SQL); $this->abortIf( $dupes !== [], 'Duplicate (source, medical_system_code) rows exist — resolve them manually before adding the unique index: ' . json_encode($dupes, JSON_UNESCAPED_UNICODE) ); $this->addSql('DROP INDEX idx_doctors_source ON doctors'); $this->addSql('CREATE UNIQUE INDEX uniq_doctors_source_code ON doctors (source, medical_system_code)'); } public function down(Schema $schema): void { $this->addSql('DROP INDEX uniq_doctors_source_code ON doctors'); $this->addSql('CREATE INDEX idx_doctors_source ON doctors (source, medical_system_code)'); } }