/** * Rename this table and all of its change-tracker entries. * @param string $new_name */ public function rename($new_name) { if ($this->getDatabase()->getTable($new_name)) { throw new \Exception("Table '{$new_name}' already exists"); } $old_name = $this->getName(); $this->getDatabase()->query("RENAME TABLE `{$old_name}` TO `{$new_name}`;"); $this->getDatabase()->reset(); $new = $this->getDatabase()->getTable($new_name, false); if (!$new) { throw new \Exception("Table '{$old_name}' was not renamed to '{$new_name}'"); } $this->name = $new->getName(); $this->getDatabase()->query("UPDATE `" . ChangeTracker::changes_name() . "`" . " SET `table_name` = '{$new_name}' " . " WHERE `table_name` = '{$old_name}';"); }