mirror of
https://github.com/kamilwylegala/cakephp2-php8.git
synced 2025-01-19 02:56:15 +00:00
Changes Model::find() to allow modification of DataSource connection during callbacks.
This commit is contained in:
parent
38f578199d
commit
1c8a2f232b
3 changed files with 32 additions and 1 deletions
|
@ -1948,7 +1948,6 @@ class Model extends Overloadable {
|
|||
list($type, $query) = array($conditions, $fields);
|
||||
}
|
||||
|
||||
$db =& ConnectionManager::getDataSource($this->useDbConfig);
|
||||
$this->findQueryType = $type;
|
||||
$this->id = $this->getID();
|
||||
|
||||
|
@ -1995,6 +1994,9 @@ class Model extends Overloadable {
|
|||
}
|
||||
}
|
||||
|
||||
if (!$db =& ConnectionManager::getDataSource($this->useDbConfig)) {
|
||||
return false;
|
||||
}
|
||||
$results = $db->read($this, $query);
|
||||
$this->resetAssociations();
|
||||
$this->findQueryType = null;
|
||||
|
|
|
@ -4899,6 +4899,23 @@ class ModelReadTest extends BaseModelTest {
|
|||
$expected = array('mariano', 'nate', 'larry', 'garrett');
|
||||
$this->assertEqual($result, $expected);
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests that the database configuration assigned to the model can be changed using
|
||||
* (before|after)Find callbacks
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function testCallbackSourceChange() {
|
||||
$this->loadFixtures('Post');
|
||||
$TestModel = new Post();
|
||||
$this->assertEqual(3, count($TestModel->find('all')));
|
||||
|
||||
$this->expectError(new PatternExpectation('/Non-existent data source foo/i'));
|
||||
$this->expectError(new PatternExpectation('/Only variable references/i'));
|
||||
$this->assertFalse($TestModel->find('all', array('connection' => 'foo')));
|
||||
}
|
||||
|
||||
/**
|
||||
* testMultipleBelongsToWithSameClass method
|
||||
*
|
||||
|
|
|
@ -763,6 +763,18 @@ class Post extends CakeTestModel {
|
|||
* @access public
|
||||
*/
|
||||
var $belongsTo = array('Author');
|
||||
|
||||
function beforeFind($queryData) {
|
||||
if (isset($queryData['connection'])) {
|
||||
$this->useDbConfig = $queryData['connection'];
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
function afterFind($results) {
|
||||
$this->useDbConfig = 'test_suite';
|
||||
return $results;
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Author class
|
||||
|
|
Loading…
Add table
Reference in a new issue