mengapa tidak menggunakan perilaku yang dapat ditahan
// 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);
EDIT:
Baru saja mencobanya dan mendapatkan sql ini (Modul <-> Tag):
SELECT `Module`.`id` FROM `modules` AS `Module` WHERE 1 = 1
dan
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
jelas itu tidak dapat mengembalikan hasil yang diinginkan, karena Anda harus melakukan kueri untuk setiap hasil Modul (yang sekali lagi akan menghasilkan terlalu banyak kueri).
Sebagai kesimpulan, saya akan mengembalikan semua Tag (dalam contoh saya) karena overhead dalam terlalu banyak baris hasil lebih baik daripada overhead dari terlalu banyak kueri..