1
0
mirror of synced 2024-12-13 14:56:01 +03:00
This commit is contained in:
zYne 2007-06-25 20:08:16 +00:00
parent f86ac4c8e2
commit 612793d9cb
4 changed files with 41 additions and 27 deletions

View File

@ -102,6 +102,10 @@ class Doctrine_Hydrate extends Doctrine_Object implements Serializable
'parserCache' => false,
'resultSetCache' => false,
);
/**
* @var string $_sql cached SQL query
*/
protected $_sql;
/**
* @var array $parts SQL query string parts
*/
@ -643,7 +647,6 @@ class Doctrine_Hydrate extends Doctrine_Object implements Serializable
public function _execute($params, $return = Doctrine::FETCH_RECORD)
{
$params = $this->_conn->convertBooleans(array_merge($this->_params, $params));
$params = $this->convertEnums($params);
if ( ! $this->_view) {
$query = $this->getQuery($params);
@ -651,6 +654,7 @@ class Doctrine_Hydrate extends Doctrine_Object implements Serializable
$query = $this->_view->getSelectSql();
}
$params = $this->convertEnums($params);
if ($this->isLimitSubqueryUsed() &&
$this->_conn->getAttribute(Doctrine::ATTR_DRIVER_NAME) !== 'mysql') {

View File

@ -111,7 +111,6 @@ class Doctrine_Query extends Doctrine_Query_Abstract implements Countable
}
public function reset()
{
$this->_enumParams = array();
$this->_pendingJoinConditions = array();
$this->pendingSubqueries = array();
$this->pendingFields = array();
@ -305,6 +304,8 @@ class Doctrine_Query extends Doctrine_Query_Abstract implements Countable
}
}
$this->_state = Doctrine_Query::STATE_DIRTY;
return $this;
}
/**
@ -688,6 +689,10 @@ class Doctrine_Query extends Doctrine_Query_Abstract implements Countable
*/
public function getQuery($params = array())
{
if ($this->_state !== self::STATE_DIRTY) {
return $this->_sql;
}
$parts = $this->_dqlParts;
// reset the state
@ -722,6 +727,8 @@ class Doctrine_Query extends Doctrine_Query_Abstract implements Countable
}
}
}
$params = $this->convertEnums($params);
$this->_state = self::STATE_DIRECT;
// invoke the preQuery hook
@ -814,6 +821,7 @@ class Doctrine_Query extends Doctrine_Query_Abstract implements Countable
if ($needsSubQuery) {
array_shift($this->parts['where']);
}
$this->_sql = $q;
return $q;
}

View File

@ -49,7 +49,9 @@ class Doctrine_Enum_TestCase extends Doctrine_UnitTestCase
try {
$query = new Doctrine_Query($this->connection);
$ret = $query->query('FROM EnumTest WHERE EnumTest.status = ?', array('open'));
$ret = $query->parseQuery('FROM EnumTest WHERE EnumTest.status = ?')
->execute(array('open'));
$this->assertEqual(count($ret), 1);
} catch (Exception $e) {
$this->fail();
@ -108,22 +110,22 @@ class Doctrine_Enum_TestCase extends Doctrine_UnitTestCase
{
$enum = new EnumTest();
$enum->status = "open";
$this->assertEqual($enum->status, "open");
$enum->status = 'open';
$this->assertEqual($enum->status, 'open');
$enum->save();
$this->assertEqual($enum->status, "open");
$this->assertEqual($enum->status, 'open');
$enum->refresh();
$this->assertEqual($enum->status, "open");
$this->assertEqual($enum->status, 'open');
$enum->status = "closed";
$enum->status = 'closed';
$this->assertEqual($enum->status, "closed");
$this->assertEqual($enum->status, 'closed');
$enum->save();
$this->assertEqual($enum->status, "closed");
$this->assertEqual($enum->status, 'closed');
$this->assertTrue(is_numeric($enum->id));
$enum->refresh();
$this->assertEqual($enum->status, "closed");
$this->assertEqual($enum->status, 'closed');
}
public function testEnumTypeWithCaseConversion()
@ -132,24 +134,24 @@ class Doctrine_Enum_TestCase extends Doctrine_UnitTestCase
$enum = new EnumTest();
$enum->status = "open";
$this->assertEqual($enum->status, "open");
$enum->status = 'open';
$this->assertEqual($enum->status, 'open');
$enum->save();
$this->assertEqual($enum->status, "open");
$this->assertEqual($enum->status, 'open');
$enum->refresh();
$this->assertEqual($enum->status, "open");
$this->assertEqual($enum->status, 'open');
$enum->status = "closed";
$enum->status = 'closed';
$this->assertEqual($enum->status, "closed");
$this->assertEqual($enum->status, 'closed');
$enum->save();
$this->assertEqual($enum->status, "closed");
$this->assertEqual($enum->status, 'closed');
$enum->refresh();
$this->assertEqual($enum->status, "closed");
$this->assertEqual($enum->status, 'closed');
$this->conn->setAttribute(PDO::ATTR_CASE, PDO::CASE_NATURAL);
}

View File

@ -72,7 +72,7 @@ $test = new GroupTest('Doctrine Framework Unit Tests');
$test->addTestCase(new Doctrine_Ticket330_TestCase());
*/
/**
/** */
// Connection drivers (not yet fully tested)
$test->addTestCase(new Doctrine_Connection_Pgsql_TestCase());
$test->addTestCase(new Doctrine_Connection_Oracle_TestCase());
@ -150,7 +150,7 @@ $test->addTestCase(new Doctrine_Expression_Oracle_TestCase());
$test->addTestCase(new Doctrine_Expression_Sqlite_TestCase());
// Core
*/
$test->addTestCase(new Doctrine_Access_TestCase());
//$test->addTestCase(new Doctrine_Configurable_TestCase());
@ -180,8 +180,8 @@ $test->addTestCase(new Doctrine_Relation_Parser_TestCase());
// Datatypes
$test->addTestCase(new Doctrine_Enum_TestCase());
$test->addTestCase(new Doctrine_Boolean_TestCase());
$test->addTestCase(new Doctrine_Boolean_TestCase());
// Utility components
@ -299,7 +299,7 @@ $test->addTestCase(new Doctrine_Query_JoinCondition_TestCase());
$test->addTestCase(new Doctrine_Query_MultipleAggregateValue_TestCase());
$test->addTestCase(new Doctrine_Query_TestCase());
/** */
//$test->addTestCase(new Doctrine_IntegrityAction_TestCase());
//$test->addTestCase(new Doctrine_AuditLog_TestCase());