защо не използвате съдържателно поведение
// 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);
РЕДАКТИРАНЕ:
Току-що опитах това и получих този sql (Module <-> Tag):
SELECT `Module`.`id` FROM `modules` AS `Module` WHERE 1 = 1
и
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
очевидно това не може да върне желания резултат, тъй като ще трябва да направите заявка за всеки резултат от модула (което отново ще доведе до твърде много заявки).
Като заключение бих върнал всички маркери (в моя пример), тъй като режийните разходи в твърде много редове с резултати са по-добри от допълнителните разходи за твърде много заявки..