Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Fehler beim CakePHP- und HABTM-Modelllimit

warum nicht das Containable-Verhalten verwenden

// 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);

BEARBEITEN:

Ich habe das gerade versucht und diese SQL erhalten (Modul <-> Tag):

SELECT `Module`.`id` FROM `modules` AS `Module` WHERE 1 = 1 

und

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

offensichtlich kann das nicht das gewünschte Ergebnis zurückgeben, da Sie für jedes Modulergebnis eine Abfrage durchführen müssten (was wiederum zu viel zu vielen Abfragen führen würde).

Als Schlussfolgerung würde ich alle Tags (in meinem Beispiel) zurückgeben, da der Overhead in zu vielen Ergebniszeilen besser ist als der Overhead von zu vielen Abfragen..