From 1e359f816cfff86a9ab67d60d2947cf25dae87f6 Mon Sep 17 00:00:00 2001 From: abijah Date: Wed, 22 Jul 2009 22:27:55 +0000 Subject: [PATCH] Fixed the Linkable behavior from polluting the query fields when performing a count query. git-svn-id: file:///svn-source/pmgr/branches/yafr_20090716/site@362 97e9348a-65ac-dc4b-aefc-98561f571b83 --- models/behaviors/linkable.php | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/models/behaviors/linkable.php b/models/behaviors/linkable.php index 111c34a..e3b9d3f 100644 --- a/models/behaviors/linkable.php +++ b/models/behaviors/linkable.php @@ -145,17 +145,18 @@ class LinkableBehavior extends ModelBehavior { ); $result = array_diff_key($query, array($this->_key => 1)); - $this->buildQuery($Model, $Model->alias, $Model->alias, $query[$this->_key], $result); + $this->buildQuery($Model, $Model->alias, $Model->alias, $Model->findQueryType, + $query[$this->_key], $result); return $result; } - function buildQuery(&$Reference, $referenceClass, $referenceAlias, $links, &$result) { + function buildQuery(&$Reference, $referenceClass, $referenceAlias, $query_type, $links, &$result) { if (empty($links)) return; $this->pr(10, array('begin' => 'Linkable::buildQuery', - 'args' => compact('referenceClass', 'referenceAlias', 'links'), + 'args' => compact('referenceClass', 'referenceAlias', 'query_type', 'links'), )); //$defaults = $this->_defaults;// + array($this->_key => array()); @@ -400,8 +401,11 @@ class LinkableBehavior extends ModelBehavior { $options['fields'] = $db->fields($Model, $modelAlias); elseif (!empty($options['fields'])) $options['fields'] = $db->fields($Model, $modelAlias, $options['fields']); - - $result['fields'] = array_merge($result['fields'], $options['fields']); + + // When performing a count query, fields are useless. + // For everything else, we need to add them into the set. + if ($query_type !== 'count') + $result['fields'] = array_merge($result['fields'], $options['fields']); $result['joins'][] = array_intersect_key($options, array('type' => true, @@ -411,7 +415,7 @@ class LinkableBehavior extends ModelBehavior { 'conditions' => true)); $sublinks = array_diff_key($options, $this->_options); - $this->buildQuery($Model, $modelClass, $modelAlias, $sublinks, $result); + $this->buildQuery($Model, $modelClass, $modelAlias, $query_type, $sublinks, $result); $this->pr(19, array('checkpoint' => 'Model Join Complete',