From d489d490a6e688d09191ec1ca5dbc79a7f729d2b Mon Sep 17 00:00:00 2001 From: mark_story Date: Sat, 24 Sep 2011 22:05:22 -0400 Subject: [PATCH] Moving 'joins' key conversion into DboSource::buildJoinStatement() Having this in Model felt like the wrong layer for it to reside. This also simplifies a few things internally. Refs #1517 --- cake/libs/model/datasources/dbo_source.php | 13 ++++++++----- cake/libs/model/model.php | 5 ----- .../libs/model/datasources/dbo_source.test.php | 1 + cake/tests/cases/libs/model/model_read.test.php | 2 +- 4 files changed, 10 insertions(+), 11 deletions(-) diff --git a/cake/libs/model/datasources/dbo_source.php b/cake/libs/model/datasources/dbo_source.php index a3206651dd8..ee19d01b9f7 100755 --- a/cake/libs/model/datasources/dbo_source.php +++ b/cake/libs/model/datasources/dbo_source.php @@ -1297,7 +1297,7 @@ function generateAssociationQuery(&$model, &$linkModel, $type, $association = nu $query = array_merge(array('order' => $assocData['order'], 'limit' => $assocData['limit']), $query); } else { $join = array( - 'table' => $this->fullTableName($linkModel), + 'table' => $linkModel, 'alias' => $alias, 'type' => isset($assocData['type']) ? $assocData['type'] : 'LEFT', 'conditions' => trim($this->conditions($conditions, true, false, $model)) @@ -1336,7 +1336,7 @@ function generateAssociationQuery(&$model, &$linkModel, $type, $association = nu $joinKeys = array($assocData['foreignKey'], $assocData['associationForeignKey']); list($with, $joinFields) = $model->joinModel($assocData['with'], $joinKeys); - $joinTbl = $this->fullTableName($model->{$with}); + $joinTbl = $model->{$with}; $joinAlias = $joinTbl; if (is_array($joinFields) && !empty($joinFields)) { @@ -1346,8 +1346,8 @@ function generateAssociationQuery(&$model, &$linkModel, $type, $association = nu $joinFields = array(); } } else { - $joinTbl = $this->fullTableName($assocData['joinTable']); - $joinAlias = $joinTbl; + $joinTbl = $assocData['joinTable']; + $joinAlias = $this->fullTableName($assocData['joinTable']); } $query = array( 'conditions' => $assocData['conditions'], @@ -1436,6 +1436,9 @@ function buildJoinStatement($join) { if (!empty($data['conditions'])) { $data['conditions'] = trim($this->conditions($data['conditions'], true, false)); } + if (!empty($data['table'])) { + $data['table'] = $this->fullTableName($data['table']); + } return $this->renderJoinStatement($data); } @@ -1730,7 +1733,7 @@ function _getJoins($model) { if (isset($model->{$assoc}) && $model->useDbConfig == $model->{$assoc}->useDbConfig) { $assocData = $model->getAssociated($assoc); $join[] = $this->buildJoinStatement(array( - 'table' => $this->fullTableName($model->{$assoc}), + 'table' => $model->{$assoc}, 'alias' => $assoc, 'type' => isset($assocData['type']) ? $assocData['type'] : 'LEFT', 'conditions' => trim($this->conditions( diff --git a/cake/libs/model/model.php b/cake/libs/model/model.php index ab60176e5c8..7d29ed461ae 100644 --- a/cake/libs/model/model.php +++ b/cake/libs/model/model.php @@ -2132,11 +2132,6 @@ function find($conditions = null, $fields = array(), $order = null, $recursive = if (!$db =& ConnectionManager::getDataSource($this->useDbConfig)) { return false; } - if (!empty($query['joins']) && is_array($query['joins'])) { - foreach($query['joins'] as $i => $join) { - $query['joins'][$i]['table'] = $db->fullTableName($join['table']); - } - } $results = $db->read($this, $query); $this->resetAssociations(); 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 f092f2dd8ae..32ec6737c49 100644 --- a/cake/tests/cases/libs/model/datasources/dbo_source.test.php +++ b/cake/tests/cases/libs/model/datasources/dbo_source.test.php @@ -1461,6 +1461,7 @@ function testGenerateAssociationQuerySelfJoin() { 'order' => array(), 'group' => null ); + $queryData['joins'][0]['table'] = $this->testDb->fullTableName($queryData['joins'][0]['table']); $this->assertEqual($queryData, $expected); $result = $this->testDb->generateAssociationQuery($this->Model, $null, null, null, null, $queryData, false, $null); diff --git a/cake/tests/cases/libs/model/model_read.test.php b/cake/tests/cases/libs/model/model_read.test.php index 27c86eb8d99..c4e89fd0498 100755 --- a/cake/tests/cases/libs/model/model_read.test.php +++ b/cake/tests/cases/libs/model/model_read.test.php @@ -5158,7 +5158,7 @@ function testHabtmFinderQuery() { 'group' => null, 'joins' => array(array( 'alias' => 'ArticlesTag', - 'table' => $this->db->fullTableName('articles_tags'), + 'table' => 'articles_tags', 'conditions' => array( array("ArticlesTag.article_id" => '{$__cakeID__$}'), array("ArticlesTag.tag_id" => $this->db->identifier('Tag.id'))