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:
@@ -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',
|
||||||
|
|||||||
Reference in New Issue
Block a user