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
This commit is contained in:
abijah
2009-07-22 22:27:55 +00:00
parent b641dc98ec
commit 1e359f816c

View File

@@ -145,17 +145,18 @@ class LinkableBehavior extends ModelBehavior {
); );
$result = array_diff_key($query, array($this->_key => 1)); $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; return $result;
} }
function buildQuery(&$Reference, $referenceClass, $referenceAlias, $links, &$result) { function buildQuery(&$Reference, $referenceClass, $referenceAlias, $query_type, $links, &$result) {
if (empty($links)) if (empty($links))
return; return;
$this->pr(10, $this->pr(10,
array('begin' => 'Linkable::buildQuery', array('begin' => 'Linkable::buildQuery',
'args' => compact('referenceClass', 'referenceAlias', 'links'), 'args' => compact('referenceClass', 'referenceAlias', 'query_type', 'links'),
)); ));
//$defaults = $this->_defaults;// + array($this->_key => array()); //$defaults = $this->_defaults;// + array($this->_key => array());
@@ -401,7 +402,10 @@ class LinkableBehavior extends ModelBehavior {
elseif (!empty($options['fields'])) elseif (!empty($options['fields']))
$options['fields'] = $db->fields($Model, $modelAlias, $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, $result['joins'][] = array_intersect_key($options,
array('type' => true, array('type' => true,
@@ -411,7 +415,7 @@ class LinkableBehavior extends ModelBehavior {
'conditions' => true)); 'conditions' => true));
$sublinks = array_diff_key($options, $this->_options); $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, $this->pr(19,
array('checkpoint' => 'Model Join Complete', array('checkpoint' => 'Model Join Complete',