封じ込め可能な動作 を使用してみませんか
// 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を取得しました(モジュール<->タグ):
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
モジュールの結果ごとにクエリを実行する必要があるため、明らかに目的の結果を返すことはできません(その場合も、クエリが多すぎます)。
結論として、結果行が多すぎる場合のオーバーヘッドはクエリが多すぎる場合のオーバーヘッドよりも優れているため、すべてのタグ(私の例では)を返します。