示例#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;
 }
示例#2
0
 /**
  * Execute a prepared statement
  *
  * Note: returns false on duplicate keys instead of SQLException
  *
  * @access public
  * @return PDOStatement|false
  */
 public function execute()
 {
     try {
         $this->beforeExecute();
         $pdoStatement = $this->db->getConnection()->prepare($this->sql);
         $this->bindParams($pdoStatement);
         $pdoStatement->execute();
         $this->afterExecute();
         return $pdoStatement;
     } catch (PDOException $e) {
         return $this->handleSqlError($e);
     }
 }