示例#1
0
 /**
  * Migrate the schema to one version to another
  *
  * @access public
  * @param  integer  $current_version
  * @param  integer  $next_version
  * @return boolean
  */
 public function migrateTo($current_version, $next_version)
 {
     try {
         $this->db->startTransaction();
         $this->db->getDriver()->disableForeignKeys();
         for ($i = $current_version + 1; $i <= $next_version; $i++) {
             $function_name = '\\Schema\\version_' . $i;
             if (function_exists($function_name)) {
                 call_user_func($function_name, $this->db->getConnection());
             }
         }
         $this->db->getDriver()->setSchemaVersion($i - 1);
         $this->db->getDriver()->enableForeignKeys();
         $this->db->closeTransaction();
     } catch (PDOException $e) {
         $this->db->setLogMessage($function_name . ' => ' . $e->getMessage());
         $this->db->cancelTransaction();
         $this->db->getDriver()->enableForeignKeys();
         return false;
     }
     return true;
 }