public function prepareFields(Model $Model, $queryData)
{
if (empty($queryData['fields'])) {
$queryData['fields'] = $this->fields($Model);
} elseif (!empty($Model->hasMany) && $Model->recursive > -1) {
// hasMany relationships need the $Model primary key.
$assocFields = $this->fields($Model, null, "{$Model->alias}.{$Model->primaryKey}");
$passedFields = $queryData['fields'];
if (count($passedFields) > 1 || strpos($passedFields[0], $assocFields[0]) === false && !preg_match('/^[a-z]+\\(/i', $passedFields[0])) {
$queryData['fields'] = array_merge($passedFields, $assocFields);
}
}
return array_unique($queryData['fields']);
}