mirror of
https://github.com/kamilwylegala/cakephp2-php8.git
synced 2024-11-15 03:18:26 +00:00
Refactoring the code to build the query array as suggested here https://github.com/cakephp/cakephp/pull/147#issuecomment-1553663
This commit is contained in:
parent
9d7c97c296
commit
adb943b7fd
2 changed files with 38 additions and 26 deletions
|
@ -2102,7 +2102,7 @@ class Model extends Object {
|
|||
* - Otherwise, first and second fields are used for key and value.
|
||||
*
|
||||
* @param string $type Type of find operation (all / first / count / neighbors / list / threaded)
|
||||
* @param array $query Option fields (conditions / fields / joins / limit / offset / order / page / group / callbacks / returnQuery)
|
||||
* @param array $query Option fields (conditions / fields / joins / limit / offset / order / page / group / callbacks)
|
||||
* @return array Array of records
|
||||
* @link http://book.cakephp.org/view/1018/find
|
||||
*/
|
||||
|
@ -2110,11 +2110,42 @@ class Model extends Object {
|
|||
$this->findQueryType = $type;
|
||||
$this->id = $this->getID();
|
||||
|
||||
$query = $this->buildQuery($type, $query);
|
||||
if (is_null($query)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
$results = $this->getDataSource()->read($this, $query);
|
||||
$this->resetAssociations();
|
||||
|
||||
if ($query['callbacks'] === true || $query['callbacks'] === 'after') {
|
||||
$results = $this->_filterResults($results);
|
||||
}
|
||||
|
||||
$this->findQueryType = null;
|
||||
|
||||
if ($type === 'all') {
|
||||
return $results;
|
||||
} else {
|
||||
if ($this->findMethods[$type] === true) {
|
||||
return $this->{'_find' . ucfirst($type)}('after', $query, $results);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Builds the query array that is used by the data source to generate the query to fetch the data.
|
||||
*
|
||||
* @param string $type Type of find operation (all / first / count / neighbors / list / threaded)
|
||||
* @param array $query Option fields (conditions / fields / joins / limit / offset / order / page / group / callbacks)
|
||||
* @return array Query array or null if it could not be build for some reasons
|
||||
* @see Model::find()
|
||||
*/
|
||||
public function buildQuery($type = 'first', $query = array()) {
|
||||
$query = array_merge(
|
||||
array(
|
||||
'conditions' => null, 'fields' => null, 'joins' => array(), 'limit' => null,
|
||||
'offset' => null, 'order' => null, 'page' => 1, 'group' => null, 'callbacks' => true,
|
||||
'returnQuery' => false
|
||||
),
|
||||
(array)$query
|
||||
);
|
||||
|
@ -2157,26 +2188,7 @@ class Model extends Object {
|
|||
}
|
||||
}
|
||||
|
||||
if ($query['returnQuery'] == true) {
|
||||
return $query;
|
||||
}
|
||||
|
||||
$results = $this->getDataSource()->read($this, $query);
|
||||
$this->resetAssociations();
|
||||
|
||||
if ($query['callbacks'] === true || $query['callbacks'] === 'after') {
|
||||
$results = $this->_filterResults($results);
|
||||
}
|
||||
|
||||
$this->findQueryType = null;
|
||||
|
||||
if ($type === 'all') {
|
||||
return $results;
|
||||
} else {
|
||||
if ($this->findMethods[$type] === true) {
|
||||
return $this->{'_find' . ucfirst($type)}('after', $query, $results);
|
||||
}
|
||||
}
|
||||
return $query;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -6011,12 +6011,12 @@ class ModelReadTest extends BaseModelTest {
|
|||
}
|
||||
|
||||
/**
|
||||
* test find() with the returnQuery opton in the 2nd argument to get the query array back
|
||||
* test buildQuery()
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function testFindReturnQuery() {
|
||||
public function testBuildQuery() {
|
||||
$this->loadFixtures('User');
|
||||
$TestModel = new User();
|
||||
$TestModel->cacheQueries = false;
|
||||
|
@ -6034,7 +6034,7 @@ class ModelReadTest extends BaseModelTest {
|
|||
'group' => NULL,
|
||||
'callbacks' => true,
|
||||
'returnQuery' => true);
|
||||
$result = $TestModel->find('all', array('returnQuery' => true, 'conditions' => array('user' => 'larry')));
|
||||
$result = $TestModel->buildQuery('all', array('returnQuery' => true, 'conditions' => array('user' => 'larry')));
|
||||
$this->assertEqual($expected, $result);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue