diff --git a/cake/libs/model/datasources/dbo_source.php b/cake/libs/model/datasources/dbo_source.php index b717ee00add..35be891be5a 100755 --- a/cake/libs/model/datasources/dbo_source.php +++ b/cake/libs/model/datasources/dbo_source.php @@ -841,7 +841,7 @@ function read(&$model, $queryData = array(), $recursive = null) { $db =& $this; } - if (isset($db)) { + if (isset($db) && method_exists($db, 'queryAssociation')) { $stack = array($assoc); $db->queryAssociation($model, $linkModel, $type, $assoc, $assocData, $array, true, $resultSet, $model->recursive - 1, $stack); unset($db); diff --git a/cake/tests/cases/libs/model/datasources/dbo_source.test.php b/cake/tests/cases/libs/model/datasources/dbo_source.test.php index 8dda31f0025..5ef6d396f21 100644 --- a/cake/tests/cases/libs/model/datasources/dbo_source.test.php +++ b/cake/tests/cases/libs/model/datasources/dbo_source.test.php @@ -1339,6 +1339,7 @@ function getLastQuery() { function endTest() { unset($this->Model); Configure::write('debug', $this->debug); + ClassRegistry::flush(); unset($this->debug); } @@ -4441,4 +4442,19 @@ function testFullTablePermutations() { $result = $this->testDb->fullTableName($Article, false); $this->assertEqual($result, 'tbl_articles'); } + +/** + * test that read() only calls queryAssociation on db objects when the method is defined. + * + * @return void + */ + function testReadOnlyCallingQueryAssociationWhenDefined() { + ConnectionManager::create('test_no_queryAssociation', array( + 'datasource' => 'data' + )); + $Article =& ClassRegistry::init('Article'); + $Article->Comment->useDbConfig = 'test_no_queryAssociation'; + $result = $Article->find('all'); + $this->assertTrue(is_array($result)); + } }