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));
$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',