pourquoi ne pas utiliser le comportement confinable
// 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);
MODIFIER :
Je viens d'essayer et j'ai obtenu ce sql (Module <-> Tag):
SELECT `Module`.`id` FROM `modules` AS `Module` WHERE 1 = 1
et
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
évidemment, cela ne peut pas renvoyer le résultat souhaité, car vous devrez effectuer une requête pour chaque résultat de module (ce qui entraînerait à nouveau un trop grand nombre de requêtes).
En conclusion, je renverrais toutes les balises (dans mon exemple) car la surcharge dans trop de lignes de résultats est meilleure que la surcharge de trop de requêtes..