Browse Source

Not using bindTo(), it is not implemented in hhvm

Jose Lorenzo Rodriguez 12 years ago
parent
commit
3c4d9ccbcb
2 changed files with 15 additions and 14 deletions
  1. 0 9
      src/Database/Driver/PDODriverTrait.php
  2. 15 5
      src/Database/Query.php

+ 0 - 9
src/Database/Driver/PDODriverTrait.php

@@ -93,9 +93,6 @@ trait PDODriverTrait {
  */
 	public function beginTransaction() {
 		$this->connect();
-		if ($this->_connection->inTransaction()) {
-			return true;
-		}
 		return $this->_connection->beginTransaction();
 	}
 
@@ -106,9 +103,6 @@ trait PDODriverTrait {
  */
 	public function commitTransaction() {
 		$this->connect();
-		if (!$this->_connection->inTransaction()) {
-			return false;
-		}
 		return $this->_connection->commit();
 	}
 
@@ -118,9 +112,6 @@ trait PDODriverTrait {
  * @return boolean true on success, false otherwise
  */
 	public function rollbackTransaction() {
-		if (!$this->_connection->inTransaction()) {
-			return false;
-		}
 		return $this->_connection->rollback();
 	}
 

+ 15 - 5
src/Database/Query.php

@@ -232,7 +232,21 @@ class Query implements ExpressionInterface, IteratorAggregate {
 			$generator->resetCount();
 		}
 
-		$visitor = function($parts, $name) use (&$sql, $generator) {
+		$query = $this->_transformQuery();
+		$query->traverse($query->_sqlCompiler($sql, $generator));
+		return $sql;
+	}
+
+/**
+ * Returns a callable object that can be used to compile a SQL string representtion
+ * of this query
+ *
+ * @param string $sql initial sql string to append to
+ * @param \Cake\Database\ValueBinder The placeholder and value binder object
+ * @return \Closure
+ */
+	protected function _sqlCompiler(&$sql, $generator) {
+		return function($parts, $name) use (&$sql, $generator) {
 			if (!count($parts)) {
 				return;
 			}
@@ -245,10 +259,6 @@ class Query implements ExpressionInterface, IteratorAggregate {
 			}
 			return $sql .= $this->{'_build' . ucfirst($name) . 'Part'}($parts, $generator);
 		};
-
-		$query = $this->_transformQuery();
-		$query->traverse($visitor->bindTo($query));
-		return $sql;
 	}
 
 /**