/** * Construct migration definition. * * @param MigratableDatabase $db The database to migrate. */ public function __construct(MigratableDatabase $db) { $this->db = $db; $this->targetDefinition = $db->getDefinition(); $db->refreshDefinition(); $current = $db->getDefinition(); foreach ($current->getTables() as $table) { $this->tables[] = $table; $this->definitions[$table] = $current->getDefinition($table); } $db->setDefinition($this); }
/** * Alter a key. * * @param string $table * Table name. * @param string $key * Key name. * @param string[] $columns * Columns. * @param bool $unique * Uniqueness. */ protected function alterKey($table, $key, array $columns, $unique = true) { try { $this->db->alterKey($table, $key, $columns, $unique); $this->definition->alterKey($table, $key, $columns, $unique); } catch (\Exception $e) { if (!$this->ignoreExceptions) { throw $e; } } }