por qué no usar el comportamiento contenedor
// you would probably want the next line in the app_model ot be able to use it with all models
$this->Post->actsAs = array('Containable')
$params['conditions'] = array(
);
$params['contain'] = array(
'Media' => array(
'fields' => array(
'type', 'path', 'title'
),
'limit' => 1
)
);
$this->Post->find('all', $params);
EDITAR:
Acabo de intentarlo y obtuve este sql (Módulo <-> Etiqueta):
SELECT `Module`.`id` FROM `modules` AS `Module` WHERE 1 = 1
y
SELECT `Tag`.`id`, `ModulesTag`.`module_id`, `ModulesTag`.`tag_id`
FROM `tags` AS `Tag`
JOIN `modules_tags` AS `ModulesTag`
ON (`ModulesTag`.`module_id` IN (1, 2, 3, 4) AND `ModulesTag`.`tag_id` = `Tag`.`id`)
WHERE `Tag`.`belongs_to` = 'Module'
ORDER BY `Tag`.`name` ASC
LIMIT 1
obviamente, eso no puede devolver el resultado deseado, ya que tendría que hacer una consulta para cada resultado del Módulo (lo que nuevamente resultaría en demasiadas consultas).
Como conclusión, devolvería todas las etiquetas (en mi ejemplo) ya que la sobrecarga de demasiadas filas de resultados es mejor que la sobrecarga de demasiadas consultas.