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);
|
list($type, $query) = array($conditions, $fields);
|
||||||
}
|
}
|
||||||
|
|
||||||
$db =& ConnectionManager::getDataSource($this->useDbConfig);
|
|
||||||
$this->findQueryType = $type;
|
$this->findQueryType = $type;
|
||||||
$this->id = $this->getID();
|
$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);
|
$results = $db->read($this, $query);
|
||||||
$this->resetAssociations();
|
$this->resetAssociations();
|
||||||
$this->findQueryType = null;
|
$this->findQueryType = null;
|
||||||
|
|
|
@ -4899,6 +4899,23 @@ class ModelReadTest extends BaseModelTest {
|
||||||
$expected = array('mariano', 'nate', 'larry', 'garrett');
|
$expected = array('mariano', 'nate', 'larry', 'garrett');
|
||||||
$this->assertEqual($result, $expected);
|
$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
|
* testMultipleBelongsToWithSameClass method
|
||||||
*
|
*
|
||||||
|
|
|
@ -763,6 +763,18 @@ class Post extends CakeTestModel {
|
||||||
* @access public
|
* @access public
|
||||||
*/
|
*/
|
||||||
var $belongsTo = array('Author');
|
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
|
* Author class
|
||||||
|
|
Loading…
Add table
Reference in a new issue