From 1afe7ef6f45fdabb5abd7e68a29e783b03182d87 Mon Sep 17 00:00:00 2001 From: Austin Burdine Date: Sun, 11 Oct 2015 00:23:49 -0500 Subject: [PATCH] add initial transaction support --- .travis.yml | 7 +++++-- src/Pixie/QueryBuilder/QueryBuilderHandler.php | 18 ++++++++++++++++-- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/.travis.yml b/.travis.yml index 51b9075..a5306e7 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,11 +1,14 @@ +sudo: false + language: php php: - 5.3 - 5.4 + - 5.5 before_script: - - curl -s http://getcomposer.org/installer | php - - php composer.phar install --prefer-source --no-interaction --dev + - curl -sS http://getcomposer.org/installer | php + - php composer.phar install --prefer-source --no-interaction script: phpunit diff --git a/src/Pixie/QueryBuilder/QueryBuilderHandler.php b/src/Pixie/QueryBuilder/QueryBuilderHandler.php index 36d2a19..8af0eba 100644 --- a/src/Pixie/QueryBuilder/QueryBuilderHandler.php +++ b/src/Pixie/QueryBuilder/QueryBuilderHandler.php @@ -23,7 +23,7 @@ class QueryBuilderHandler protected $statements = array(); /** - * @var PDO + * @var \PDO */ protected $pdo; @@ -434,7 +434,6 @@ public function delete() list($response, $executionTime) = $this->statement($queryObject->getSql(), $queryObject->getBindings()); $this->fireEvents('after-delete', $queryObject, $executionTime); - return $response; } @@ -790,6 +789,21 @@ public function join($table, $key, $operator = null, $value = null, $type = 'inn return $this; } + public function transaction(\Closure $callback) + { + try { + $this->pdo->beginTransaction(); + + $callback($this); + $this->pdo->commit(); + + return true; + } catch (\Exception $e) { + $this->pdo->rollBack(); + return false; + } + } + /** * @param $table * @param $key