<?php $table = new AlmanacNetwork(); $conn = $table->establishConnection('w'); queryfx( $conn, 'LOCK TABLES %T WRITE', $table->getTableName()); $seen = array(); foreach (new LiskMigrationIterator($table) as $network) { $name = $network->getName(); // If this is the first copy of this row we've seen, mark it as seen and // move on. if (empty($seen[$name])) { $seen[$name] = 1; continue; } // Otherwise, rename this row. while (true) { $new_name = $name.'-'.$seen[$name]; if (empty($seen[$new_name])) { $network->setName($new_name); try { $network->save(); break; } catch (AphrontDuplicateKeyQueryException $ex) { // New name is a dupe of a network we haven't seen yet. } } $seen[$name]++; } $seen[$new_name] = 1; } queryfx( $conn, 'ALTER TABLE %T ADD UNIQUE KEY `key_name` (name)', $table->getTableName()); queryfx( $conn, 'UNLOCK TABLES');