From 6ed2e63d8801e7593a903da683f36d23c2f99c4c Mon Sep 17 00:00:00 2001 From: romanb Date: Mon, 22 Oct 2007 16:32:07 +0000 Subject: [PATCH] added hydration mode HYDRATE_NONE --- lib/Doctrine.php | 5 +++++ lib/Doctrine/Hydrate.php | 7 +++++-- tests/Hydrate/FetchModeTestCase.php | 13 +++++++++++++ tests/RecordTestCase.php | 1 + 4 files changed, 24 insertions(+), 2 deletions(-) diff --git a/lib/Doctrine.php b/lib/Doctrine.php index 0623c4fb4..acd49baab 100644 --- a/lib/Doctrine.php +++ b/lib/Doctrine.php @@ -359,6 +359,11 @@ final class Doctrine * HYDRATE_ARRAY */ const HYDRATE_ARRAY = 3; + + /** + * HYDRATE_NONE + */ + const HYDRATE_NONE = 4; /** * VALIDATION CONSTANTS diff --git a/lib/Doctrine/Hydrate.php b/lib/Doctrine/Hydrate.php index a713207f1..01107b535 100644 --- a/lib/Doctrine/Hydrate.php +++ b/lib/Doctrine/Hydrate.php @@ -882,7 +882,7 @@ class Doctrine_Hydrate extends Doctrine_Locator_Injectable implements Serializab if (is_integer($stmt)) { return $stmt; } - + $array = $this->parseData2($stmt, $hydrationMode); } return $array; @@ -1024,7 +1024,10 @@ class Doctrine_Hydrate extends Doctrine_Locator_Injectable implements Serializab */ public function parseData2($stmt, $hydrationMode) { - + if ($hydrationMode == Doctrine::HYDRATE_NONE) { + return $stmt->fetchAll(PDO::FETCH_NUM); + } + $cache = array(); $rootMap = reset($this->_aliasMap); $rootAlias = key($this->_aliasMap); diff --git a/tests/Hydrate/FetchModeTestCase.php b/tests/Hydrate/FetchModeTestCase.php index 5e84c20d7..69852476a 100644 --- a/tests/Hydrate/FetchModeTestCase.php +++ b/tests/Hydrate/FetchModeTestCase.php @@ -160,4 +160,17 @@ class Doctrine_Hydrate_FetchMode_TestCase extends Doctrine_UnitTestCase $users = $q->execute(array($u->id), Doctrine::HYDRATE_ARRAY); $this->assertEqual($users[0]['created'], null); } + + public function testHydrateNone() + { + $u = new User(); + $u->name = "fetch_array_test"; + $u->created = null; + $u->save(); + + $q = new Doctrine_Query(); + $q->select('COUNT(u.id) num')->from('User u')->where('u.id = ?'); + $res = $q->execute(array($u->id), Doctrine::HYDRATE_NONE); + $this->assertEqual(1, $res[0][0]); + } } diff --git a/tests/RecordTestCase.php b/tests/RecordTestCase.php index ac0b05a37..bcaa4b055 100644 --- a/tests/RecordTestCase.php +++ b/tests/RecordTestCase.php @@ -240,6 +240,7 @@ class Doctrine_Record_TestCase extends Doctrine_UnitTestCase $this->connection->clear(); $user = $this->connection->getTable('User')->find(5); + $this->assertEqual($user->name, null); }